От JLS 14.14.1 The basic for
Statement:
BasicForStatement:
for ([ForInit] ; [Expression] ; [ForUpdate]) Statement
Первая часть, [ForInit] должна быть декларация переменной или набор переменных одного и того же тип:
Если код ForInit представляет собой список выражений операторов (§14.8), выражения вычисляются последовательно слева направо; их значения, если они есть, отбрасываются.
Вторая часть, [Выражение] должно быть boolean
:
Выражение должен иметь тип boolean
или Boolean
, или ошибка в время компиляции происходит
Итак, ваше текущее объявление цикла for
не отвечает этим условиям. Давайте посмотрим, почему:
for(
int i=0, int j=0; //you cannot declare a list of variables like this
//you can test this by moving this piece of code
//out of the for loop
i<10 , j<14; //this expression doesn't return a boolean nor a Boolean
i++, j=j+2 //this one is right
) {
//...
}
Таким образом, правильный путь, чтобы объявить этот for
цикл будет:
for(
int i=0, j=0;
i<10 && j<14;
i++, j=j+2
) {
//...
}
Который, в одном ЛСС будет:
for(int i=0, j=0; i<10 && j<14; i++, j=j+2) {
//...
}
Ваш фрагмент кода делает не компилировать. [Docs] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html) являются хорошим чтением. –
Второй параметр должен быть условным, а 'i <10, j <14' не является условным. –
Такое происходит в C, но не в Java. В Java вы получите ошибку времени компиляции.В C, однако, только самое правое выражение в списке, разделенном запятой, «подсчитывается», хотя все оцениваются ... – BadZen