static char characters[] = { 'a', 'b', ' ', 'c', ' ', 'e', 'f', ' ' };
public static void main(String args[]) {
for (int i = 0; i < characters.length; i++) {
int j = i + 1;
if (characters[i] == ' ') {
while (j < characters.length && characters[j] == ' ' || characters[j] == '\u0000') {
j++; // increment j till a non-space char is found
}
}
}
for (char character : characters) {
System.out.print(character + " ");
}
}
Eclipse 显示以下错误: 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 8 在loopchecker.main(loopchecker.java:13)
第 13 行是 while 循环
。但我已经在检查 j's
值是否小于长度。
最佳答案
这是因为 or
运算符。
下面的条件是这样的
(j < characters.length && characters[j] == ' ') || characters[j] == '\u0000'
因此,由于 and
运算符的优先级高于 or
运算符,因此您始终执行 or 条件,这会导致 ArrayOutOfBoundException。
您可能会想要在 while 条件中包含大括号。
while (j < characters.length && (characters[j] == ' ' || characters[j] == '\u0000'))
关于java - 为什么这个程序给我一个数组索引越界异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35570434/