Печать таблиц столбцов в Java с использованием printf - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь напечатать таблицы столбцов, используя printf в Java. Как я могу go о перемещении этих столбцов друг под другом?

В настоящее время я получаю это:

Но это то, что я хочу :

Вот мой код

import java.util.Scanner;

public class LabTimeTable{

   public static void main(String [] args){
   Scanner input = new Scanner(System.in);

   System.out.println("Time Table:");

   System.out.print("Number (1-10): ");
   int number1 = input.nextInt();
   int number2 = (number1+1);
   int number3 = (number2+1);
   int number4 = (number3+1);
   int number5 = (number4+1);
   int number6 = (number5+1);
   int number7 = (number6+1);
   int number8 = (number7+1);
   int number9 = (number8+1);
   int number10 = (number9+1);


      for(int i = 1; i < 11; i++){

         System.out.printf("%2d * %2d = %2d", i, number1, (number1*i));
         System.out.printf("%10d * %2d = %2d", i, number2, (number2*i));
         System.out.printf("%10d * %2d = %2d", i, number3, (number3*i));
         System.out.printf("%10d * %2d = %2d", i, number4, (number4*i));
         System.out.printf("%10d * %2d = %2d", i, number5, (number5*i));
         System.out.printf("%10d * %2d = %2d", i, number6, (number6*i));
         System.out.printf("%10d * %2d = %2d", i, number7, (number7*i));
         System.out.printf("%10d * %2d = %2d", i, number8, (number8*i));
         System.out.printf("%10d * %2d = %2d", i, number9, (number9*i));
         System.out.printf("%10d * %2d = %2d", i, number10, (number10*i));
         System.out.println();

      }


   }

1 Ответ

1 голос
/ 24 февраля 2020

printf не добавляет символ новой строки в конец вывода, для этого вам, вероятно, следует использовать %n

Далее, вам нужно оставить несколько пробелов между двумя столбцами, это легко установить с помощью %10s, где 10 - количество символов, от которых вы хотите отделить два столбца.

После этого вам просто нужно решить, хотите ли вы сделать все в одном оператор ...

System.out.printf("%2d * %2d = %2d%10s%2d * %2d = %2d%n", index, multiplier, (multiplier * index), "", index, multiplier + 1, ((multiplier + 1) * index));

или использовать несколько операторов ...

System.out.printf("%2d * %2d = %2d", index, multiplier, (multiplier * index));
System.out.printf("%10s%2d * %2d = %2d%n", "", index, multiplier + 1, ((multiplier + 1) * index));

Пример выполнения ...

public class Test {

    public static void main(String[] args) {

        int multiplier = 1;
        for (int index = 1; index < 11; index++) {
            //System.out.printf("%2d * %2d = %2d%10s%2d * %2d = %2d%n", index, multiplier, (multiplier * index), "", index, multiplier + 1, ((multiplier + 1) * index));
            System.out.printf("%2d * %2d = %2d", index, multiplier, (multiplier * index));
            System.out.printf("%10s%2d * %2d = %2d%n", "", index, multiplier + 1, ((multiplier + 1) * index));
        }

    }
}
...