Операции / Расчет в Java
Хорошо, у меня есть следующее для цикла:
public static void main(String []args){
for (int i=2; i<12 ; i=i+2)
System.out.print(3-i%3);
System.out.println();
}
И это распечатывает: 12312. Чтобы понять, как он вычисляет числа, я попытался вычислить это, и согласно моей обработке это первое число должно быть фактически 2.
Я почти уверен, что ошибаюсь в своих мыслях, поскольку BlueJ сначала печатает номер 1. Но почему 1? Может кто-нибудь объяснить это?
Я написал на листе бумаги способ, которым я понял / разработал расчет и сфотографировал его, чтобы вы могли увидеть мою работу по получению числа 2 и, возможно, вы можете указать на мою ошибку.
2 ответа
Основываясь на ваших заметках, я думаю, вы неправильно поняли поведение цикла for.
Согласно вашим заметкам, вы заменяете i на 4 ( 2+2) в первой итерации.
for (int i=2; i<12 ; i=i+2)
Но для первой итерации я буду 2
initial value ; condition ; increment/decrements
В конце каждой итерации будет выполняться третий блок (increment/decrements)
, Так что для первой итерации я был бы 2
а также 3-i%3
будет 3-(2%3)
=> 3 - 2
=> 1.
Для следующей итерации я был бы i = i+2 => 2 + 2 => 4
тогда ваш ответ будет 2
согласно моей работе, первое число должно быть на самом деле 2.
Проверьте свои расчеты: 2 % 3
(остаток после деления 2 на 3) равен 2. 3 - 2
является 1
, так что вывод правильный.
Обратите внимание, что операции не выполняются в том порядке, в котором они записаны: %
имеет более высокий приоритет, чем вычитание, поэтому оно выполняется перед вычитанием. В данном случае это не имеет значения, но важно помнить об этом.