Je suis nouveau dans la programmation. J'apprends actuellement Java, sur une boucle imbriquée maintenant, et je suis resté bloqué.
Donc, ce que je veux faire est d'écrire un programme qui prend un entier de l'utilisateur et
imprimer des lignes, par exemple si l'utilisateur saisit était 4 alors le résultat devrait être comme:
1 1 2 1 2 3 1 2 3 4 1 2 3 4
Voici mon code jusqu'à présent:
import java.util.Scanner; public class Hello { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter number of rows:"); int number = input.nextInt(); for (int i = 1; i <= number; i++) { System.out.println(i); for (int j = 1; j <= i; j++) { System.out.print(j + " "); } } } }
Mais il en imprime un ligne supplémentaire à la fin, comme:
1 1 2 1 2 3 1 2 3 4
Et il m'est difficile de comprendre pourquoi.
Je suppose que c'est ma première boucle for mais Je ne sais pas comment réparer la boucle for pour obtenir le résultat souhaité.
Toute aide sera appréciée. Merci!
4 Réponses :
N'imprimez rien de la boucle externe, seulement la nouvelle ligne
1 1 2 1 2 3 1 2 3 4
Sortie
for (int i = 1; i <= number; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + " "); } System.out.println(); }
Le problème est d'imprimer une nouvelle ligne et i
en même temps ... il suffit de prendre soin de la nouvelle ligne après votre boucle for
. La boucle interne peut gérer toutes les impressions.
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter number of rows:"); int number = input.nextInt(); for (int i = 1; i <= number; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + " "); } System.out.println(); } } }
Pour éviter les espaces de fin des autres réponses,
plutôt que d'imprimer i
au début de la boucle, imprimez 1
.
Ensuite, démarrez la boucle interne à partir de 2
et imprimez un espace avant chaque valeur. Et imprimez une nouvelle ligne après la boucle interne.
for (int i = 1; i <= number; i++) { System.out.print("1"); for (int j = 2; j <= i; j++) { System.out.print(" " + j); } System.out.println(); }
Imprime:
1
1 2
1 2 3
1 2 3 4
Let's us dry run it at first you print 1 then newline then j goes from 1 to 1 nut no newline now 2 is printed by i now newline so result 1 2 again j goes like 1 , 2 but no newline so again 3 is printed by i then newline so result 1 2 3 again j goes like 1 , 2, 3, but no newline so again 4 is printed by i then newline so result 1 2 3 4 again j goes like 1 , 2, 3, 4 // this one is the extra line
qu'est-ce que tu veux dire, une ligne supplémentaire à la fin
@Stultuske vient d'être ajouté dans le post, merci de l'avoir signalé :)
Supprimez
System.out.println (i);
et ajoutezSystem.out.println ();
après la boucle for imbriquée.@HomeIsWhereThePcIs Merci beaucoup!