我可能只是累了,无法正常思考了,但为什么“13”在这里只打印一次? (intelliJ 告诉我“i == 11 | i == 13
”始终为真,但我不明白这有什么意义)
for (int i = 0; i < 14; i++) {
System.out.println(i);
String line = clientReader.readLine();
int length = line.length();
if (i == 0 || i == 5 || i == 6) {
line = line.substring(7, length - 6);
} else if (i == 1 || i == 2 || i == 3 || i == 4 || i == 8 || i == 9 || i == 10 || i == 12) {
line = line.substring(8, length - 7);
} else if (i == 7) {
line = line.substring(9, length - 8);
} else if (i == 11 || i == 13) {
line = line.substring(10, length - 9);
}
data[i] = line;
System.out.println(i);
}
附:如果我在最后一个 else 的末尾添加 System.out.println(line) 如果它打印正确的内容,则 line.substring 不会给出错误。
最佳答案
最后else if
始终为真,因为您的循环控制变量从 0
运行直到13
以及在最后一个 else if
之前您没有检查过的唯一两个数字是 11
和13
因此,如果上述条件都不成立,则 i
将是 11
或13
因此,为什么 IntelliJ 足够聪明,知道它总是正确的,因此控制将始终绑定(bind)在最后一个 else if
内。不满足上述条件时阻塞。
如果将循环条件增加到类似 i < 15
的值或以上则 IntelliJ 不会声明 else if (i == 11 || i == 13)
始终为 i
可能是14
.
关于java - java中通过索引从字符串中获取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48480634/