0

我需要制作一个如下所示的文本块:

1 1 4

1 2 3

1 3 2

1 4 1

我目前有这个代码:

for (int x = 1; x <= 4; x++) {
 for (int y = 4; y >= 1; y--) {
  System.out.println("1 " + x + " " + y);
 }
 System.out.println();
}

但它输出错误的东西,如

1 1 4

1 1 3

1 1 2

1 1 1

1 2 4

1 2 3

1 2 2

1 2 1

1 3 4

1 3 3

1 3 2

1 3 1

1 4 4

1 4 3

1 4 2

1 4 1

有人可以帮助我吗?是与我的循环语法有关还是与内部有关?加上我是新来的,请不要太苛刻。

4

3 回答 3

0

每个循环都会继续,直到数字达到 4 或 1,我的朋友,也许只是先在素描纸上写下逻辑。:D

于 2022-01-26T02:24:31.883 回答
0

您的循环逻辑不正确。您有两个循环,每个循环总共运行 4 次,因此您的循环运行 16 次,这不是您想要的。你想要这样的东西。

for (int x = 1; x <= 4; x++) {
    int y = 4 - x + 1;
    System.out.println("1 " + x + " " + y);
    System.out.println();
}
于 2022-01-25T23:54:12.657 回答
0

这有点奇怪,但是您可以使用嵌套循环执行此操作的一种方法是跳出内部循环并在内部循环中使用 zvxf 的逻辑而不是作为变量:

for (int x = 1; x <= 4; x++) {
        for (int y = 5-x; y >= 1; y--) {
        System.out.println("1 " + x + " " + y);
        break;
        }
    System.out.println();
}

输出:

1 1 4

1 2 3

1 3 2

1 4 1
于 2022-01-26T02:00:38.237 回答