无法正确评估 for 循环

Having trouble with a for loop evaluating incorrectly

我今天遇到了这个问题,我不确定是什么原因造成的。以下代码:

int totWidth = 19;
String header = "Kalle's Numbers";
if (totWidth > header.length()) {
    for (int j = 0; j < totWidth / 2 - header.length() / 2; j++) {
        header += " ";
    }
}
System.out.println(header + "|");

应该屈服

Kalle's Numbers  |

而是产生

Kalle's Numbers |

我通过添加一个变量稍微修改了代码"rightSpaces"

int totWidth = 19;
String header = "Kalle's Numbers";
if (totWidth > header.length()) {
    int rightSpaces = totWidth / 2 - header.length() / 2;
    for (int j = 0; j < rightSpaces; j++) {
        header += " ";
    }
}
System.out.println(header + "|");

突然它产生了正确的输出。这是为什么?

因为当它遍历您的 for 循环时,您可以通过添加 space 来更改 header 的长度。所以 header.length() / 2 在循环的继续条件中每次都可能是不同的值。

你在第二个例子中所做的通过评估一次解决了这个问题。