Защо ArrayIndexOutOfBoundsException
и как да го избегнем в Android?
Отговори:
5 за отговор № 1Това изключение се хвърля, когато се опитате да получите достъп до елемент от масив, който не съществува:
String [] myArray = new String[2];
myArray[2] = "something"; // Throws exception
myArray[-1] = "something"; // Throws exception
Преди да осъществите достъп до елемент от масив, проверете дали индексът ви не е отрицателен и не по-висок от дължината на масива.
3 за отговор № 2
Защо се появява ArrayIndexOutOfBoundsException [...]
Тук е цитат от Спецификация на езика на Java: 10.4 Достъп до масив:
Всички достъп до масиви се проверяват по време на изпълнение; опитът да се използва индекс, който е по-малък от нула или по-голям или равен на дължината на масива, води до изхвърляне на ArrayIndexOutOfBoundsException.
[...] и как да го избегнем в Android?
Уверете се, че индексите са в диапазона [0 ...yourArray.length
-1].
(Обърнете внимание на -1 по-горе. Масивите са 0-индексирани, което означава, че ще намерите първия елемент в индекс 0, а последният - при 1
1 за отговор № 3
Това означава, както вече казахте, че имате достъп до елемент от масив, който не съществува.
По-голямата част от времето е, защото някой пита за размера на масив (дължина) и след това се опитва да прочете последния елемент като array[length]
, Но масивите започват от 0, така че последното, което можете да прочетете, е array[length-1]
Разтворът е разбира се няма достъп до елементи, които не съществуват
0 за отговор № 4
Това изключение няма нищо общо с Android, защото приложенията за Android използват езика за програмиране на Java. По-скоро трябва да попитате how to avoid it in Java?
.
И най-долният ред е, че се опитвате да получите достъп до стойността на невалидния индекс в масива.
Прочетете официалната документация тук:
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html