嵌套While循环逻辑错误

时间:2014-02-12 20:54:15

标签: java while-loop nested-loops

我是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--;
    }

2 个答案:

答案 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--;
}