2011-02-10 2 views
2

ArrayIndexOutOfBoundsException이 왜 발생하며 Android에서이를 피하는 방법은 무엇입니까?ArrayIndexOutOfBoundsException이 발생하는 이유는 무엇이며 Android에서이를 피하는 방법은 무엇입니까?

+3

잘 순진한 대답은 "당신 때문에 존재하지 않는 배열 인덱스에 액세스하려고했기 때문에 너무 커서 배열의 경계를 벗어났습니다. 너무 크거나 작습니다 (후자의 경우에는 음수). 그러나 A) 훨씬 더 많은 설명이나 B) 코드 샘플 (선호하는 B, 정말로) 없이는 특정 상황에 도움이되는 것이 본질적으로 불가능합니다. – eldarerathis

+2

더 짧은 대답 : 선언 된 경계 밖의 배열에 액세스하지 마십시오. –

+0

확인하십시오. http://stackoverflow.com/questions/690028/array-index-out-of-bounds 또는 http://stackoverflow.com/questions/4044578/java-arrayindexoutofbounds-exception –

답변

4

당신이 배열이 존재하지 않는 항목에 액세스하려고 할 때 예외가 발생합니다 : 배열 항목에 액세스하기 전에 배열의 길이보다 더 높은

String [] myArray = new String[2]; 

myArray[2] = "something"; // Throws exception 
myArray[-1] = "something"; // Throws exception 

당신은 당신의 인덱스가 음수가 있는지 확인해야하며,이 .

1

즉, 존재하지 않는 배열 항목에 액세스한다는 의미입니다.

대개 누군가가 배열의 길이 (길이)를 묻고 나서 마지막 항목을 array[length]으로 읽으려고하기 때문입니다. 그러나 배열은 마지막 있도록 array[length-1]

Sollution이 당연히

0

이 예외는 존재하지 않는 항목 안드로이드와는 아무 상관이없는 액세스하지 않습니다이다 읽을 수 0에서 시작 안드로이드 응용 프로그램을 사용하기 때문에 자바 프로그래밍 언어. 오히려 how to avoid it in Java?과 같은 질문을해야합니다.

결론은 배열의 잘못된 색인에있는 값에 액세스하려고한다는 것입니다.

여기에 공식 문서 읽기 :

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

3

이유는, ArrayIndexOutOfBoundsException가 발생 [...] 여기

the Java Language Specification: 10.4 Array Access에서 인용입니다 :

모든 배열 액세스는 런타임에 검사됩니다. 0보다 작은 지, 배열의 길이 이상인 인덱스를 사용하려고하면 (자), ArrayIndexOutOfBoundsException가 Throw됩니다.

 

[...] 어떻게 안드로이드에 그것을 피하기 위해?

인덱스가 [0 ... yourArray.length -1] 범위 내에 있는지 확인하십시오.

(음 -1 위. 배열은 인덱스 0에서 첫 번째 요소를 찾고, 길이-1에서 마지막 것을 의미하는 0 색인.)

+0

+1 대답은 ... 그렇지만 길이 0 배열에 색인을 생성 할 수 있습니다 - 1? : p –

+2

0이 범위 [0 ... -1] (공집합 :)에 없기 때문에 음, 아니요. 물론 빈 배열의 모든 마지막 요소는 인덱스 -1에서 찾을 수 있습니다 .-) – aioobe

관련 문제