我是Java的新手,我正在尝试理解嵌套的while循环。我正在尝试编写一个打印以下输出的程序:
999999999 on the top line,
88888888 on the next,
7777777 etc,
666666 etc,
55555
4444
333
22
1
我很容易使用for循环来做到这一点,但现在我想用While循环做同样的事情。问题是我的代码在当前状态下只打印第一行9,然后看起来内部的While循环不再运行了。
我非常困惑,我认为我的任何标准都不是重言式,但我不太了解重言式。请解释我的循环逻辑有什么问题。对我来说,循环仍然是很多神秘的伏都教。
int outer = 9;
int inner = 1;
while (outer >= 1)
{
while(inner <= outer)
{
System.out.print(outer);
inner++;
}
System.out.println();
outer--;
}
答案 0 :(得分:1)
您必须在第二个while循环后重置inner
的值。
while (outer >= 1){
while(inner <= outer){
System.out.print(outer);
inner++;
}
inner = 1;
System.out.println();
outer--;
}
另请注意,快速使用调试器,或者只需用笔和纸来查看每次迭代时每个变量的值是什么,都会让你看到这个问题比在这里提出问题更快。
答案 1 :(得分:0)
每次都需要重置inner
:
while (outer >= 1) {
inner = 1; // ADD THIS LINE
while(inner <= outer)
{
System.out.print(outer);
inner++;
}
System.out.println();
outer--;
}