Я пытаюсь сделать простую инициализацию матрицы в Android, и я получаю сообщение об ошибке: java.lang.ArrayIndexOutOfBoundsException. Я пытаюсь это:
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;
... и т. Д.
Где моя ошибка?
попробуйте это
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
Это потому, что id считается длиной строки, и вы пытаетесь получить доступ к тому же элементу ... но последний элемент - vat[i][id-1], но вы пытаетесь получить vat[i][id]
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; } }
Я думаю, потому что вы инициализируете массив по id.После этого вы вызываете vot [i] [id], который всегда будет на 1 больше.
fe
если вы создаете новый int [3] [3]
, вы можете звонить только на позиции 0,1 и 2
удачи