Не могу написать "i + 2" как постусловие в моем цикле for-each [Java] - PullRequest
0 голосов
/ 17 января 2019

Может ли кто-нибудь объяснить мне, почему я могу написать «i + 2» в качестве пост-условия при переборе List <> в цикле for-each, но при написании перебора необходимо написать «i = i + 2» массив?

    for(int i = 0; i < numbers.length; i+2)
    {
        numbers[i] = 2;
        System.out.println(numbers[i]);
    }

Ответы [ 2 ]

0 голосов
/ 17 января 2019

i + 2 это выражение, вы должны присвоить результат где-нибудь, поэтому правильный синтаксис:

for(int i = 0; i < numbers.length; i=i+2)
{
    numbers[i] = 2;
    System.out.println(numbers[i]);
}
0 голосов
/ 17 января 2019

ForUpdate должен быть StatementExpressionList, то есть список StatementExpression с.

i+2 является выражением, но не выражением оператора.

Выражения операторов можно неофициально (*) рассматривать как выражения, которые могут иметь побочный эффект, и поэтому для них имеет смысл стоять в одиночестве в утверждении. i+2 не имеет побочного эффекта, поэтому нет смысла его оценивать.


(*) Неофициально, потому что method1() + method2() может иметь побочный эффект, потому что methodN() может иметь побочный эффект; и тем не менее, это не выражение оператора, потому что «основное» выражение здесь - сложение - само по себе не имеет побочных эффектов.

Вы можете написать это как for (;; method1(), method2()) { ... } (без добавления), если это было то, что вы хотели в вашем ForUpdate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...