使用嵌套 for 循环从用户输入中打印给定的数字模式

Print a given number pattern from user input using nested for loop

我是编程新手。目前正在学习 Java,现在在嵌套循环上,但卡住了。

所以我想做的是编写一个程序,从用户那里获取一个整数,

打印行,例如,如果用户输入是 4 那么结果应该是这样的:

1

1 2

1 2 3

1 2 3 4

到目前为止,这是我的代码:

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 + " ");
            }
        }
    }
}

但是它在末尾多打印了一行,例如:

1

1 2

1 2 3

1 2 3 4

1 2 3 4

我很难弄清楚为什么。

我想这是我的第一个 for 循环,但我不知道如何修复 for 循环以获得我想要的结果。

如有任何帮助,我们将不胜感激。谢谢!

不要从外循环打印任何东西,只打印新行

for (int i = 1; i <= number; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(j + " ");
    }
    System.out.println();
}

输出

1 
1 2 
1 2 3 
1 2 3 4 

问题是同时打印换行符和 i...只需处理 for 循环后的换行符。内部循环可以处理所有打印件。

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

为了避免其他答案的尾随 space, 不要在循环开始时打印 i,而是打印 1。 然后从2开始内循环,在每个值之前打印一个space。并在内部循环之后打印一个新行。

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

打印:

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