-2

为什么输出在3之后进入新行?像这样:

9

8 7

6 5 4

3

2 1

我输入的任何数字总是在 3 之后输入一个新行。当我输入 9 时,我的目标输出应该是这样的:

9

8 7

6 5 4

3 2 1 0

请您向我解释一下为什么它在 3 之后进入新行?

public class TriangleWithInput {

/**
 * @param args
 */
@SuppressWarnings("resource")
public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner sc = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int input = sc.nextInt();

    while (input >= 0) {
        int c = 1;
        while ( c <= input) {
            int r = 1;
            while (r <= c) {
                System.out.print(input + " ");
                input--;
                r++;
            }
            System.out.println();
            c++;
        }
    }
}

}

4

1 回答 1

5

你似乎有一个太多的嵌套循环。因为测试,你得到了一条新线路c <= input;当input达到 3 和时c >= 3,您进行换行并重置c为 1。

我会这样写你的循环:

for (int r = 1; input >= 0; ++r) {
    for (int c = 1; c <= r && input >= 0; ++c, --input) {
        System.out.print(input + " ");
    }
    System.out.println();
}
于 2012-11-01T18:32:37.450 回答