2013-06-13 2 views
3

의 방법으로 배열의 값을 변경 내 코드입니다 ? MyClass() 형 대신에 당신은 당신의 생성자에서 지역 변수 array 선언이자바 클래스 다음

int[] array = new int[10]; 

답변

4

this.array = new int [10]; 

에서

0

, 실제로 Myclass에 선언 된 array를 초기화하지 않을 수 있도록.

생성자에서 array을 직접 참조 할 수 있습니다. 대신

int[] array = new int[10]; 

사용이

array = new int[10]; 

은 또한, 당신은 당신의 Myclass 클래스의 범위 array static으로 선언했습니다.

private static int[] array; 

당신은 여기 Myclass의 인스턴스를, 그래서 그것은 중요하지 않습니다,하지만 당신은 생성자에서 초기화하는 경우 일반적으로이 정적 없을 것이다. static을 삭제해야합니다.

private int[] array; 
0

코드는 다음과 같아야합니다. 생성자에서 인스턴스 변수를 초기화하는 대신 새 로컬 변수를 만들었고 인스턴스 변수는 초기화되지 않고 NullPointerException을 발생 시켰습니다. 또한 인스턴스 변수는 정적이어서는 안됩니다. 당신이 m (즉 m.array)의 필드로 array을 사용하려는 경우

class Myclass { 

    private int[] array; 

public static void main(String[] args) { 
Myclass m = new Myclass(); 
for (int i = 0; i < 10; i++) { 
    m.array[i] = i; 
    System.out.println(m.array[i]); 
} 
} 

public Myclass() { 
     array = new int[10]; 
} 

} 
0

첫째, static로 선언하지만,하지 않습니다 당신이해야 할

private int[] array; 

다음 일이 초기화하는 것입니다 그것. 그 중 가장 적합한 곳은 생성자입니다.

public MyClass() { 
    array= new int[10]; //just array = new int[10]; don't put int[] in front of the array, because the variable already exists as a field. 
} 

나머지 코드는 작동합니다.

2

생성자에서 배열이라는 정적 클래스 변수가 아닌 로컬 변수 이름 배열에 할당을 지정합니다. 이것은 범위 문제입니다.

또한 m.array를 통해 배열에 액세스 할 때 정적 변수가 아닌 멤버 변수가 필요하다고 생각합니다. 수정 사항은 다음과 같습니다

class Myclass { 

    private int[] array; 

    public static void main(String[] args) { 
    Myclass m = new Myclass(); 
    for (int i = 0; i < 10; i++) { 
     m.array[i] = i; 
     System.out.println(m.array[i]); 
    } 
    } 

    public Myclass() { 
     rray = new int[10]; 
    } 

} 
+0

답을 높이기 위해 다운 보더를 사용 하시겠습니까? –

+0

+1, 나는 당신의 대답을 downvote하지 않았지만 당신의 대답은 정확합니다. – rgettman

+0

@rgettman 모든 응답이 0이 될 때 나는 당신을 비난하지 않았습니다. 나는 또한 당신의 질문을지지했습니다. –