2017-09-25 14 views
-1

1D에서 셀룰러 자동 입력 기능을 수행하는 프로그램을 만들려고합니다. 이를 위해 한 줄에서 3 개의 변수를 읽어야합니다. 변수 중 하나 인 "L"은 "currentGeneration"의 배열 길이를 결정합니다. 그러나 ArrayIndexOut ... 오류가 발생합니다. 나는 배열 인덱스가 있으므로이 개 값을 저장하는 배열을 저장합니다 0에서 시작하기 때문에 [2] 잘못 인이 내 배열의 차원과 액세스 값을 시도왜 ArrayIndexOutOfBoundsException 2 오류가 발생하는지 이해하지 못합니다.

public class Cellulitissss { 
    int L; 
    Scanner sc = new Scanner(System.in); 
    Boolean[] currentGeneration; 
    String automaton; 
    int G; 
    String X; 
    String Z; 

    public void readGeneral() { 

     String[] values = new String[2]; 
     for (int i = 0; i < 3; i++) { 
      values[i] = sc.next(); 
     } 
     automaton = values[0]; 
     X = values[1]; 
     Z = values[2]; 
     L = Integer.parseInt(X); 
     G = Integer.parseInt(Z); 
     currentGeneration = new Boolean[L + 1]; 
    } 
} 
+1

'values ​​[i]'는'i = 0,1' (size = 2)에만 존재하기 때문에 – nullpointer

+0

인덱스가 없습니다. 배열은 '0'과'1' 인덱스를 가지고 있습니다. – Berger

+0

그리고 XLZG mean ** nothing **과 같은 이름을보십시오. 하나의 대문자를 * anything *의 이름으로 사용하는 정당한 이유는 없습니다. 따라서 : Java 명명 규칙에 대해 읽고 그것을 연습 해보십시오. – GhostCat

답변

0

변수 L. 함께 할 수 있다고 생각 배열 이름이 a 인 경우 위치 a [0]과 a [1]에 있습니다. 그래서 [2]에 접근하려고하면 배열 인덱스가 경계 밖으로 벗어납니다.