2013-04-18 4 views
1

저는 자바를 처음 접했고 오늘은 배열 작업을 시작했고 길을 잃었습니다. 배열에 일부 값을 넣으려고하지만 오류가 발생했습니다. java.lang.ArrayIndexOutOfBoundsException.java.lang.ArrayIndexOutOfBoundsException의 의미는 무엇입니까?

여기까지 제가 한 것입니다.

 int n=6; 
     int[]A= new int [1]; 

     for(i=0;i<n;i++){ 
      A[i]=keyboard.nextInt(); 
     } 
+2

http://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html –

+1

배열에 인덱스가 하나만있는'A [1] '에 액세스하려고했음을 의미합니다. 0 – alfasin

+0

@alfasin, 틀렸어. 배열은 A [0] –

답변

3

java.lang.ArrayIndexOutOfBoundsException 존재하지 않는 배열 인덱스에 액세스하려고하고 있음을 나타냅니다.

문제는 배열의 크기가 1입니다. 그러나, 당신은 그 루프를 6 번 거치고 있습니다. n을 1과 같게 만들거나 배열의 크기를 늘릴 수 있습니다.

0

의미가 무엇인지 의미합니다. 정의한 배열 범위 밖의 요소에 액세스하려고합니다.

배열 새로운 int [1]; 은 하나의 요소 만 보유합니다. 당신은 int [n]을 의미한다고 생각합니다;

0

액세스 할 수없는 메모리에 액세스하려고합니다. 배열은 크기 1로 선언되고 n = 6으로 설정됩니다. 따라서 배열 A를 탐색하면 선언되지 않은 배열의 가상 위치 5 개를 액세스하려고합니다. 따라서 배열 인덱스가 범위를 벗어납니다.

은 당신이 아마 원하는 것은 이것이다 :

int n=6; 

     int[]A= new int [n]; 

    for(i=0;i<n;i++) 
    { 
     A[i]=keyboard.nextInt(); 

    } 
1

문제는 배열의 크기가 하나의 점이다. 배열 선언의 대괄호 사이에 배열의 크기를 설정합니다.

for 루프가 6 번 진행됩니다. 배열의 크기를 6으로 변경할 수 있습니다.

int n = 6;

int[]A= new int [6]; 

for(i=0;i<=n;i++) 
    { 
     A[i]=keyboard.nextInt(); 

    } 
0

여기서 배열의 크기를 1로 선언했지만 배열을 6 회 통과합니다. 당신의

for 루프는

for (int i=0; i< A.length; i++){ 

    A[i]=keyboard.nextInt(); 
} 

그래서이 경우, 루프는 한 번만 통과합니다 작성해야합니다.

0

java.lang.ArrayIndexOutOfBoundsException - 존재하지 않는 배열 인덱스에 액세스하려고하고 있음을 의미합니다. 당신이 배열 [4] 그것은 당신에게는, ArrayIndexOutOfBoundsException을 줄 것이다 액세스하려고하면 예를 들어 당신은 배열을

 int []array=new int[3]; 

있습니다. 요점은 OUT OF ITS BOUND에 액세스 할 때마다이 예외가 발생한다는 것입니다.

:

0

오류가 발생하면 항상 해당 API를 확인하십시오. 예를 들어, here은 ArrayIndexOutOfBoundException의 문서입니다.

코드에서 new int [1]이라고 말하는 것으로 크기 1의 배열을 만듭니다. 배열을 반복하고 A[1]의 값을 확인하면 존재하지 않는 배열의 두 번째 요소에 액세스하려고합니다. 배열 인덱싱은 0부터 시작됩니다. 따라서 액세스중인 인덱스 은 Out of Bounds가입니다.

관련 문제