这是代码
for (int i = 1; i<=5; i++) {
for (int j = 5; j>=i; j--) {
System.out.print(" ");
}
for (int k = i; k>0; k--) {
System.out.print(k + " ");
}
System.out.println();
}
我想要得到的输出是:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
相反,我得到的是:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
您能以一种对初学者友好的方式向我解释原因并告诉我如何解决吗?
答案 0 :(得分:2)
以下提示可以帮助您解决此问题:
阅读您的代码,并确保您了解它在做什么。 (如果有人为您编写了代码,请作者解释!)如果您不了解代码的作用,则无法(正确地)修复代码...
查看预期的输出,并计算每行开头的空格数。
查看您的实际输出,并计算每行开头的空格数。
相应计数之间有什么区别?
差异的模式是什么?
此修复程序是对代码的一行进行的简单更改。如果您正确地执行了步骤1和步骤5,那么您将需要进行的更改就变得“显而易见”。
更新-我的错误。 @Bohemian指出有两个区别。如果您还希望输出的行数相同,则需要更改两行。
(但是这个答案的真正意义是帮助您自己解决……)
答案 1 :(得分:1)
确保您了解问题以及代码的确切用途。
这些是我要解决的步骤:
尝试了解输出。
计算所有内容之间的间隔,以查看是否存在某种模式。
如果您很难解决问题,请尝试将问题分解为更小的部分。然后在记事本中用伪代码编写它,这样您就可以更好地了解自己的实际操作。例如:
对于每次迭代,我必须打印X个空格,然后打印Y
我确定你能弄清楚 解决方法如下:
for (int i = 0; i<=5; i++) {
for (int j = 6; j>i; j--) {
System.out.print(" ");
}
for (int k = i; k>=0; k--) {
System.out.print(k+1 + " ");
}
System.out.println();
}