gpt4 book ai didi

java - 为什么这个程序给我一个数组索引越界异常?

转载 作者:行者123 更新时间:2023-12-02 13:15:29 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com