线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:5什么?

时间:2015-10-03 23:55:50

标签: java arrays indexoutofboundsexception

所以基本上我想制作一个算法来改组我的数组,我只有这个:

import java.util.*;

class MixUp{

    public static void main(String args[]){

        int temp, i=0;
        boolean flag=true;
        int Table[] = new int[5];
        Scanner input = new Scanner(System.in);

        for(i=0; i<5; i++){
            System.out.println("Number? : ");
            Table[i] = input.nextInt();
        }

        for(i=0; i<5; i++){
            System.out.printf(Table[i] + "\t");
        }

        for(i=0; i<5; i++){
            temp = Table[i+1];
            Table[i+1] = Table[Table.length-i];
            Table[Table.length-i] = temp;
            if(i+1 == Table.length-i) break;
        }

        for(i=0; i<5; i++){
            System.out.printf(Table[i] + "\t");
        }
     }
}

它不断弹出

  

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:5       在MixUp.main(MixUp.java:17)

3 个答案:

答案 0 :(得分:2)

你的第二个最后一个循环在i<5时迭代,这很好,但随后尝试访问Table[i+1]。如果i=4这将导致尝试访问Table[5],这当然不是有效索引。

修复此问题的一种方法是将该循环的条件更改为i<4而不是i<5

答案 1 :(得分:0)

Table[Table.length-i];

当i = 0

时,此代码将始终崩溃

答案 2 :(得分:0)

修正了它!

for(i=1; i<5; i++){
temp = Table[i];
Table[i] = Table[Table.length-i];
Table[Table.length-i] = temp;
if(i+1 == Table.length-i) break;
}

感谢您的帮助!