1
votes

Imprimer un modèle de nombre donné à partir de l'entrée utilisateur à l'aide de la boucle imbriquée for

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 commentaires

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 ajoutez System.out.println (); après la boucle for imbriquée.


@HomeIsWhereThePcIs Merci beaucoup!


4 Réponses :


1
votes

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();
}


0 commentaires

0
votes

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();
        }
    }
}


0 commentaires

1
votes

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


0 commentaires

0
votes
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

0 commentaires