为什么会出现java.lang.ArrayIndexOutOfBoundsException?

时间:2015-03-04 01:03:17

标签: java arrays indexoutofboundsexception

我正在制作一个以相反顺序输出用户输入的数组。我的程序工作但是我一直收到这条消息,"线程中的异常" 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]); 
   }
 }

3 个答案:

答案 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[]数组中的所有元素,然后发生异常。

非常感谢。