我有异常“java.lang.ArrayIndexOutOfBoundsException”的问题

时间:2010-12-14 15:17:24

标签: java arrays loops

我遇到异常“java.lang.ArrayIndexOutOfBoundsException”的问题 我写了一个程序,其中src数组长度为48,然后处理它,使用方法arrayCopy将每个6个索引带到另一个数组并打印每个dst数组 对我来说它工作正常它从最初的数组打印每个6个索引,但最后我得到一个例外的帮助请。算法只是一个测试,因为我想在另一个算法中使用arrayCopy,所以我不需要建议改变算法。我希望它足够公平

  public static void main(String [] arg) 
        {   
            int[] src = new int[48];
            for(int j=0;j<src.length;j++)
            {
                src[j]=j+1;
                System.out.print(src[j]+" ");
            }   
            System.out.println();
            int[] dst = new int[6]; 
            int from=0;
            for(int i=0;i<src.length;i++)
            {
                System.arraycopy(src, from, dst, 0, 6); // Copies 6 indexes from src starting at from into dst
                from=from+6;
                print(dst); 
                System.out.println();
            }



            } 

        public static void print(int [] dst)
        {
            for(int i=0;i<dst.length;i++)
                System.out.print(dst[i]+" ");   
        }

2 个答案:

答案 0 :(得分:3)

试试这个:

for(int i=0;i<src.length;i+=6)  // increment i by value 6

或者在for表达式中使用from

for(int from=0; from<src.length; from+=6) {
    System.arraycopy(src, from, dst, 0, 6); 
    print(dst); 
    System.out.println();
}

答案 1 :(得分:0)

你编写它的方式,在你的循环的最后一次迭代中从+ 5 = 53大于47(因此超出了源的范围)。