Как вторым циклом добавить в вывод на консоль первого нужные дефолтные значения?

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

Есть цикл:

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

Вывод:

0001 0003 0005 0007 0009 
0011 0013 0015 0017 0019 
0021 0023 0025 0027 0029 
0031 0033 0035 0037 0039 
0041 0043 

Нужно:

0001 0003 0005 0007 0009 
0011 0013 0015 0017 0019 
0021 0023 0025 0027 0029 
0031 0033 0035 0037 0039 
0041 0043 0000 0000 0000

Или:

0001 0003 0005 0007 0009 
0011 0013 0015 0017 0019 
0021 0023 0025 0027 0029 
0031 0033 0035 0037 0039 
0041 0043    0    0    0

Ответы

▲ 1Принят

У вас есть счётчик выведенных чисел k, увеличенный на 1, соответственно нужно вывести столько нулей, сколько не хватает до 5:

int k = 1;
for (int i = 1; i < 48; i += 2, k++) {
    System.out.printf("%04d " , i);
    if (k % 5==0)
        System.out.println();
}
k--; // реальное количество выведенных чисел
if (k % 5 != 0) {
    for (int i = k % 5; i < 5; i++) {
        System.out.printf("%04d ", 0);
    }
    System.out.println();
}

Аналогичный вариант с циклом while:

int k = 1;
for (int i = 1; i < 40; i += 2, k++) {
    System.out.printf("%04d " , i);
    if (k % 5==0)
        System.out.println();
}
boolean printNl = k % 5 != 1;
while ((k - 1) % 5 != 0) {
    System.out.printf("%04d " , 0);
    k++;
}
if (printNl)
    System.out.println();

Результаты:

  • i < 40
0001 0003 0005 0007 0009 
0011 0013 0015 0017 0019 
0021 0023 0025 0027 0029 
0031 0033 0035 0037 0039 

  • i < 44
0001 0003 0005 0007 0009 
0011 0013 0015 0017 0019 
0021 0023 0025 0027 0029 
0031 0033 0035 0037 0039 
0041 0043 0000 0000 0000 

и т.д.