Матрица инициализации в Android? - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь сделать простую инициализацию матрицы в Android, и я получаю сообщение об ошибке: java.lang.ArrayIndexOutOfBoundsException. Я пытаюсь это:

 Integer id = Integer.valueOf(idcateg);

            System.out.println("Id-ul e"+id);
            vot = new Integer[sirid.length][id];
            for (int i = 0; i < sirid.length; i++) {
                vot[i][id] = 0;

            }
 where id is a value between 1 and 5,sirid.length is a number that reflects number of images from different categorys. For example,I want for category 1 to have something like this :


 vot[0][1]=0;
   vot[1][1]=0;
   vot[2][1]=0;

... и т. Д.

Где моя ошибка?

Ответы [ 3 ]

1 голос
/ 01 августа 2011

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

Integer id = Integer.valueOf(idcateg);

System.out.println("Id-ul e"+id);
vot = new Integer[sirid.length][id];
for (int i = 0; i < sirid.length; i++) {
     vot[i][id-1] = 0;
}

индекс массива начинается с 0

вы устанавливаете размер массива vot sirid.lengh по id, но значение индекса начала массива от 0 до (размер) (значение размера не включено) см. цикл for

0 голосов
/ 01 августа 2011

Это потому, что id считается длиной строки, и вы пытаетесь получить доступ к тому же элементу ... но последний элемент - vat[i][id-1], но вы пытаетесь получить vat[i][id]

Так что лучше используйте это ..

for (int i = 0; i < sirid.length; i++) {
for(int j = 0; j<id ; j++){
                vot[i][j] = 0;

            }
}
0 голосов
/ 01 августа 2011

Я думаю, потому что вы инициализируете массив по id.После этого вы вызываете vot [i] [id], который всегда будет на 1 больше.

fe

если вы создаете новый int [3] [3]

, вы можете звонить только на позиции 0,1 и 2

удачи

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