奇怪的循环输出 - Java

时间:2012-05-03 18:18:28

标签: java loops while-loop nested-loops

Wy是这些循环:

while (x <= gridWidth) {
            while (y <= gridHeight) {
                System.out.println("X: " + x + ", Y: " + y);
                y++;
            }
            x++;
        }

输出:

    X: 0, Y: 0
    X: 0, Y: 1
    X: 0, Y: 2
    X: 0, Y: 3
    X: 0, Y: 4
    X: 0, Y: 5
    X: 0, Y: 6
    X: 0, Y: 7
    X: 0, Y: 8
    X: 0, Y: 9
    X: 0, Y: 10
    X: 0, Y: 11
    X: 0, Y: 12
    X: 0, Y: 13
    X: 0, Y: 14
    X: 0, Y: 15
    X: 0, Y: 16
    X: 0, Y: 17
    X: 0, Y: 18
    X: 0, Y: 19
    X: 0, Y: 20
    X: 0, Y: 21
    X: 0, Y: 22
    X: 0, Y: 23
    X: 0, Y: 24
    X: 0, Y: 25
    X: 0, Y: 26
    X: 0, Y: 27
    X: 0, Y: 28
    X: 0, Y: 29
    X: 0, Y: 30
    X: 0, Y: 31
    X: 0, Y: 32
    X: 0, Y: 33
    X: 0, Y: 34
    X: 0, Y: 35
    X: 0, Y: 36
    X: 0, Y: 37
    X: 0, Y: 38
    X: 0, Y: 39
    X: 0, Y: 40
    X: 0, Y: 41
    X: 0, Y: 42
    X: 0, Y: 43
    X: 0, Y: 44
    X: 0, Y: 45
    X: 0, Y: 46
    X: 0, Y: 47
    X: 0, Y: 48
    X: 0, Y: 49
    X: 0, Y: 50

我非常确定gridWidth = 50,因为我打印了它。

5 个答案:

答案 0 :(得分:9)

在嵌套循环开始之前,您需要将y重置为零。否则,外部循环将执行50次,但内部循环的最后49次将根本不执行,因为y已经高于gridHeight

答案 1 :(得分:2)

正如Joshua Bloch在其书Effective Java中所建议的那样,尽可能使用for构造而不是while。不太容易出错,更简洁,实际上它可能会阻止你的错误。

for (int x=0;x <= gridWidth;x++)
    for (int y=0;y <= gridHeight;y++)
        System.out.println("X: " + x + ", Y: " + y);

答案 2 :(得分:0)

您没有使用每个循环重新初始化

    while (x <= gridWidth) {
        y = 0;
        while (y <= gridHeight) {
            System.out.println("X: " + x + ", Y: " + y);
            y++;
        }
        x++;
    }

答案 3 :(得分:0)

int y=0,x=0;
while (x <= gridWidth) {
   while (y <= gridHeight) {
    System.out.println("X: " + x + ", Y: " + y);
    y++;
  }
x++;
y=0;
}

答案 4 :(得分:0)

final int gridWidth = 50, gridHeight = 50;

for(int x = 0; x <= gridWidth; x++)
  for(int y = 0; y <= gridHeight; y++)
    System.out.println("X: " + x + ", Y: " + y);