我今天遇到这个问题而且我不确定是什么原因造成的.以下代码:
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 + "|");
Run Code Online (Sandbox Code Playgroud)
应该屈服
Kalle's Numbers |
Run Code Online (Sandbox Code Playgroud)
而是屈服
Kalle's Numbers |
Run Code Online (Sandbox Code Playgroud)
我通过添加变量"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 + "|");
Run Code Online (Sandbox Code Playgroud)
并突然产生正确的输出.为什么是这样?
因为它遍历for
循环,所以header
通过添加空格来更改长度.因此header.length() / 2
,在循环中,延续条件每次都可能具有不同的值.
你在第二个例子中所做的就是通过评估一次来解决这个问题.
归档时间: |
|
查看次数: |
19 次 |
最近记录: |