Вывести две строки, отформатированные друг под другом

Я пытаюсь отформатировать вывод таблицы умножения, в которой вы можете иметь только 5 чисел / целых чисел в одной строке. Я пытаюсь использовать метод printf в цикле for, но пока он не работает.

Код:

System.out.println("Which multiplication table do you want to print?: ");
int number = input.nextInt();
int calculation;
System.out.println("Multiplication table: " + number + ":");
for (int i = 1; i <= 10; i++ ) {
    calculation = number * i;
    System.out.printf("%-5s ", calculation);
}

Мой вывод:

3    6    9    12   15   18   21   24   27   30  

Вывод, который я пытаюсь получить:

 3    6    9    12   15
 18   21   24   27   30 
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
77
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Печатайте перенос строки через каждые 5 чисел:

calculation = number * i;
System.out.printf("%-5s ", calculation);
if (i % 5 == 0) {
   System.out.println();
}    

Напечатайте новую строку после печати 5 элементов:

if (i % 5 == 0)
   System.out.println();
Ответ принят как подходящий

Я думаю, у вас есть несколько способов добиться этого: 1. Выведите новую пустую строку после 5-го итерации. 2. Добавьте "\n", чтобы отметить конец строки.

1.

for (int i = 1; i <= 10; i++ ) {
        calculation = number * i;
        if (i % 5 == 0) {
         System.out.println();
        }    
        System.out.printf("%-5s ", calculation);
}

2.

for (int i = 1; i <= 10; i++ ) {
        calculation = number * i;
        if (i % 5 == 0) {
         System.out.printf("\n");
        }    
        System.out.printf("%-5s ", calculation);
}

Надеюсь это поможет

Еще один вопрос, для чего именно используется оператор "%" и когда он используется чаще всего (примеры, пожалуйста)?

Configuration 27.09.2018 14:55

Ах, извините за то, что не объяснил этого. % - это оператор модуль в Java или по модулю в Python (если я не ошибаюсь), но это одно и то же. По сути, это операция деления, но вместо возврата значения частное она возвращает остаток. `x% 5 == 0` - это выражение для проверки, полностью ли x делится на 5, так как остаток от этой операции деления равен 0. Здесь это хорошо объяснено stackoverflow.com/questions/17524673/… Надеюсь, это поможет

JWiryo 28.09.2018 04:56

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