2014-01-20 3 views
0

이 내 코드는 다음과 같습니다 probléme이 "할 수없는 변수 J에 대한 액세스"스위치에서 선언 된 변수에 액세스 할 수없는 이유는 무엇입니까?

public static void main(String args[]) { 
    char digit = 'a'; 
    for (int i = 0; i < 10; i++){ 
     switch (digit){ 
      case 'x' : { int j = 0; System.out.println(j); } 
      default : { int j = 100; System.out.println(j); } 

     } 
    } 
    int i = j; 
    System.out.println(i); 
} 
+0

왜 정확히 여기에'switch-case'를 사용 했습니까? 루프에서 '숫자'를 수정하지 않아도됩니다. –

+4

주의해야 할 점 - 스위치의 각'case' 끝에'break;'문을 넣지 않으면 다음'case'도 실행됩니다. 이 예제에서'digit'가''x ''인 경우'0'과'100'을 모두 출력합니다. –

답변

3

각 변수의 범위가 있습니다. 범위는 일부 변수에 액세스 할 수있는 제한 사항입니다.

블록 {}의 모든 유형의 변수를으로 선언하면 그 변수는 해당 코드 블록 내에서만 액세스 할 수 있습니다.

블록 외부의 변수를 선언하고 초기화해야 (예 : 메서드 수준 또는 static 변수 또는 인스턴스 메서드로 작업하는 경우 인스턴스) 범위가 더 커야합니다.

관련 문제