Хорошо, у меня есть следующий цикл:
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, и, возможно, вы можете указать на мою ошибку.
Основываясь на ваших заметках, я думаю, вы неправильно поняли поведение цикла.
В соответствии с вашими заметками вы заменяете я на 4 (2 + 2) на первой итерации.
for (int i=2; i<12 ; i=i+2)
Но для первой итерации я буду 2
initial value ; condition ; increment/decrements
конец каждой итерации будет выполняться третий блок (increment/decrements)
. Итак, для первой итерации я бы 2
и 3-i%3
w будет 3-(2%3)
=> 3 - 2
=> 1.
Для следующей итерации я будет i = i+2 => 2 + 2 => 4
тогда ваш ответ будет 2
согласно моей работе, первый номер должен быть фактически 2.
Проверьте свои расчеты: 2 % 3
(остаток после деления 2 на 3) равен 2. 3 - 2
равен 1
, поэтому выход правильный.
Обратите внимание, что операции не выполняются в том порядке, в котором они выписаны: %
имеет более высокий приоритет, чем вычитание, поэтому он выполняется перед вычитанием. В этом случае это не имеет значения, но важно помнить об этом.
3-2%3 = ?
(%
является оператором модуля)