Ошибка при объявлении переменной внутри цикла for вместе с оператором print - PullRequest
2 голосов
/ 04 июня 2019

Я пытался узнать, как работает цикл for, поэтому я создал такой код.

for(System.out.println("hi"),int i=0;i<5;System.out.println("yo"),i++) 
{
System.out.println("teapot");
}

Таким образом, я могу понять, какая часть цикла for выполняется когда. Но в первой строке я получаю сообщение об ошибке «ожидается класс.» Может быть, это просто означает, что я не могу объявить переменную в первой строке. Так что я переработал его, и теперь он работает отлично.

int i;
for(System.out.println("hi"),i=0;i<5;System.out.println("yo"),i++) 
{
System.out.println("teapot");
}

Но я не понимаю, почему я не могу объявить переменную в первой строке.

1 Ответ

6 голосов
/ 04 июня 2019

Синтаксис basic для цикла :

BasicForStatement:
  for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

BasicForStatementNoShortIf:
  for ( [ForInit] ; [Expression] ; [ForUpdate] ) StatementNoShortIf

ForInit:
  StatementExpressionList 
  LocalVariableDeclaration

Другими словами: первый бит for может содержать список выражений оператора ., или объявления локальных переменных, но не оба.

  • System.out.println("hi") является выражением оператора (потому что это выражение вызова метода);
  • int i=0 не являетсявыражение оператора (потому что это не выражение);
  • i=0 является выражением оператора, потому что это присваивание.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...