无法正确评估 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
在循环的继续条件中每次都可能是不同的值。
你在第二个例子中所做的通过评估一次解决了这个问题。
我今天遇到了这个问题,我不确定是什么原因造成的。以下代码:
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
在循环的继续条件中每次都可能是不同的值。
你在第二个例子中所做的通过评估一次解决了这个问题。