У меня проблема с исключением "java.lang.ArrayIndexOutOfBoundsException" - PullRequest
0 голосов
/ 14 декабря 2010

У меня проблема с исключением "java.lang.ArrayIndexOutOfBoundsException". Я написал программу, имеющую массив src длиной 48, затем обрабатывает ее, чтобы передать каждые 6 индексов в другой массив с помощью метода arrayCopy и распечатать каждый массив 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 ]

3 голосов
/ 14 декабря 2010

Попробуйте это:

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

Или используйте from в выражении:

for(int from=0; from<src.length; from+=6) {
    System.arraycopy(src, from, dst, 0, 6); 
    print(dst); 
    System.out.println();
}
0 голосов
/ 14 декабря 2010

То, как вы это написали, на последней итерации цикла с + 5 = 53, что больше 47 (следовательно, за пределами источника).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...