Куда во вложенном цикле пропадают некоторые значения?

Рейтинг: -1Ответов: 1Опубликовано: 27.06.2023

Я только начинаю учить Java и столкнулся со следующим непониманием. Есть цикл:


public class Main {
    public static void main(String[] args) {
        for (int i = 1; i < 40; i += 2) {
            for (int j = 1; j <= 5; j++, i += 2) {
                System.out.printf("%04d " , i);
            }
            System.out.println();
        }
    }
}

Вывод в консоль: 0001 0003 0005 0007 0009 0013 0015 0017 0019 0021 0025 0027 0029 0031 0033 0037 0039 0041 0043 0045

Вопрос: Куда делись 0011, 0023 и 0035? И как сделать чтобы вложенный цикл не выходил за i < 40?

Заранее спасибо.

Ответы

▲ 0Принят

В таком коде с изменением счётчика цикла в двух местах немудрено запутаться.

Указанные значения пропускаются, потому что после вывода пяти значений выполняется увеличение i во внутреннем цикле (до 11), после чего он завершается, а потом и во внешнем цикле (до 13).

Вариант вывода по 5 чисел в строку с одним циклом и проверкой условия

public class Main {
    public static void main(String[] args) {
        int k = 1;
        for (int i = 1; i < 40; i += 2, k++) {
            System.out.printf("%04d " , i);
            if (k%5==0)
                System.out.println();
        }
    }
}