2014-12-04 2 views
7
if (year % 4 == 0) 
    int i = 0; 
else 
    int j = 0; 

синтаксических ошибок, которые возникают в упадке из-за этой строки кода являются:Синтаксические ошибки в Java

  • Синтаксис ошибка маркера «ИНТ», удалите этот маркер
  • я не могу быть решены к переменной
  • Синтаксис ошибки на лексемы «ИНТ», удалите этот маркер
  • J не может быть решена с переменной
  • Синтаксис ошибки на маркер «=», удалить этот токен

У меня нет подсказки, почему это происходит.

Из того, что я наблюдал, я думаю, что положить int-объявление в тело if else, чтобы это произошло.

Если я заявляю, что я и J ранее в коде и запустить программу, то ошибка не исчезает, как:

int i; int j; 
if (year % 4 == 0) 
    i = 0; 
else 
    j = 0; 

Нет синтаксической ошибки в этом случае. Зачем?

+2

Я писал ответ; но с его закрытой я не могу. Посмотрите на JLS для [оператора if] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.9), если вы подниметесь, вы увидите что «LocalVariableDeclarationStatement» может быть только в «Блоке» –

ответ

0

Возможно, это связано с объемом. Объявление i и j внутри if делает их недостижимыми вне оператора if. Объявление их наружу изменяет их сферу действия.

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