Куда во вложенном цикле пропадают некоторые значения?
Я только начинаю учить 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?
Заранее спасибо.
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
В таком коде с изменением счётчика цикла в двух местах немудрено запутаться.
Указанные значения пропускаются, потому что после вывода пяти значений выполняется увеличение 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();
}
}
}