Операции / Расчет в 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, так что вывод правильный.

Обратите внимание, что операции не выполняются в том порядке, в котором они записаны: % имеет более высокий приоритет, чем вычитание, поэтому оно выполняется перед вычитанием. В данном случае это не имеет значения, но важно помнить об этом.

Другие вопросы по тегам