我正在制作一个以相反顺序输出用户输入的数组。我的程序工作但是我一直收到这条消息,"线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:-1 在Reverse.main(Reverse.java:26)"
我正在查看第26行,即#34; System.out.println(number [x]);"但我不知道这件事是什么。为什么会这样?
for(int x= number.length -1; x<SIZE; x--)
System.out.println(number[x]);
}
}
答案 0 :(得分:3)
循环重复,而x小于SIZE。 SIZE为10,因此它保持超过零并检查位置-1。
将第二个for循环中的检查更改为
x >= 0
答案 1 :(得分:3)
您正在尝试以相反的顺序输出元素,但您的for
循环条件类似于将整数输入数组的y
for
循环。
但向后计算x
,条件x<SIZE
将始终为true
,即使您在数组的开头运行也是如此。这解释了ArrayIndexOutOfBoundsException
。
x
过了for
后,您必须停止x
0
圈。
for(int x = number.length - 1; x >= 0; x--)
答案 2 :(得分:1)
问题出在你的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[]
数组中的所有元素,然后发生异常。
非常感谢。