Операции / Расчет в Java

1

Хорошо, у меня есть следующий цикл:

  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, и, возможно, вы можете указать на мою ошибку.

Изображение 174551

  • 0
    «в соответствии с моей разработкой первое число должно быть на самом деле 2» 3-2%3 = ? ( % является оператором модуля)
  • 5
    милая ... заметки ... когда-либо! : D
Показать ещё 7 комментариев
Теги:

2 ответа

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

  • 0
    да, спасибо за совет, вы пишите, я неправильно понял способ вычисления цикла for.
3

согласно моей работе, первый номер должен быть фактически 2.

Проверьте свои расчеты: 2 % 3 (остаток после деления 2 на 3) равен 2. 3 - 2 равен 1, поэтому выход правильный.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню