2014-01-20 2 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

Что-то, о чем нужно знать - если вы не поместите инструкцию 'break;' в конце каждого 'вашего' вашего коммутатора, тогда следующий 'case' также будет выполнен. В этом примере, если 'digit' должен быть' 'x'', вы получите распечатку' 0' и '100'. –

ответ

3

Каждая переменная имеет область видимости. Сфера действия - это ограничение, касающееся того, где доступна какая-либо переменная.

Когда вы объявите переменной в любом типе блока {}, эта переменная может быть доступна только внутри этого блока кода.

Вам придется объявить (и возможно инициализировать) переменную за пределами блока, чтобы ее область была больше, либо на уровне метода, либо как переменная static (или экземпляр, если вы работали с методами экземпляра).

Смежные вопросы