为什么会出现java.lang.ArrayIndexOutOfBoundsException?
Why does java.lang.ArrayIndexOutOfBoundsException occur?
我正在制作一个以相反顺序输出用户输入的数组。我的程序运行正常,但我不断收到此消息,"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
在 Reverse.main(Reverse.java:26)"
我正在查看第 26 行,即 "System.out.println(number[x]);",但我不明白这有什么问题。为什么会这样?
for(int x= number.length -1; x<SIZE; x--)
System.out.println(number[x]);
}
}
当 x 小于 SIZE 时,循环正在重复。 SIZE 为 10,因此它不断超出零并检查位置 -1。
将第二个 for 循环中的检查更改为
x >= 0
您试图以相反的顺序输出元素,但您的 for
循环条件类似于将整数输入数组的 y
for
循环。
但是向后数 x
,条件 x<SIZE
将始终是 true
,即使您 运行 离开了数组的开头。这解释了 ArrayIndexOutOfBoundsException
.
一旦 x
已通过 0
,您必须停止 x
for
循环。
for(int x = number.length - 1; x >= 0; x--)
问题出在你的 for 循环中 -
for(int x= number.length -1; x<SIZE; x--)
System.out.println(number[x]);
将 x 设置为 number.length-1
后 x 无限递减。一旦 x 变为负数并且 number[]
数组尝试使用负索引获取值,例如 number[-1]
。然后发生ArrayIndexOutOfBound
异常。请改用以下代码片段 -
for(int x= number.length -1; x>=0; x--)
System.out.println(number[x]);
您的代码完美地显示了输出,因为异常发生在输出显示之后。代码显示 number[]
数组中的所有元素,然后发生异常。
非常感谢。
我正在制作一个以相反顺序输出用户输入的数组。我的程序运行正常,但我不断收到此消息,"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 在 Reverse.main(Reverse.java:26)"
我正在查看第 26 行,即 "System.out.println(number[x]);",但我不明白这有什么问题。为什么会这样?
for(int x= number.length -1; x<SIZE; x--)
System.out.println(number[x]);
}
}
当 x 小于 SIZE 时,循环正在重复。 SIZE 为 10,因此它不断超出零并检查位置 -1。
将第二个 for 循环中的检查更改为
x >= 0
您试图以相反的顺序输出元素,但您的 for
循环条件类似于将整数输入数组的 y
for
循环。
但是向后数 x
,条件 x<SIZE
将始终是 true
,即使您 运行 离开了数组的开头。这解释了 ArrayIndexOutOfBoundsException
.
一旦 x
已通过 0
,您必须停止 x
for
循环。
for(int x = number.length - 1; x >= 0; x--)
问题出在你的 for 循环中 -
for(int x= number.length -1; x<SIZE; x--)
System.out.println(number[x]);
将 x 设置为 number.length-1
后 x 无限递减。一旦 x 变为负数并且 number[]
数组尝试使用负索引获取值,例如 number[-1]
。然后发生ArrayIndexOutOfBound
异常。请改用以下代码片段 -
for(int x= number.length -1; x>=0; x--)
System.out.println(number[x]);
您的代码完美地显示了输出,因为异常发生在输出显示之后。代码显示 number[]
数组中的所有元素,然后发生异常。
非常感谢。