Форматирование Этого Магического Квадрата

Я ищу, чтобы отформатировать выходные данные этого кода так, чтобы итоги строк и столбцов отображались рядом с/под указанной строкой/столбцом. Я получаю числа правильно, но пробелы и количество символов, кажется, слишком непредсказуемы, чтобы правильно отформатировать его для любого размера квадрата. Вот код, который у меня сейчас есть.

public void printSquare()
{
    for (int x = 0; x < square.length; x ++)
    {
        System.out.println();
        for (int j = 0; j < square.length; j++)
        {
            System.out.print("   " + square[x][j]);
        }
        System.out.println("  |  " + sumRow(x));

    }
    System.out.print(sumOtherDiag());
    for (int x = 0; x < square.length; x ++)
    {
        System.out.print("   ^");
    }
    System.out.println(sumMainDiag());
    for (int x = 0; x < square.length; x ++)
    {
        System.out.print("   " + sumCol(x));
    }
} 

И выход для этого есть..

   8   1   6  |  15

   3   5   7  |  15

   4   9   2  |  15
15   ^   ^   ^15
   15   15   15 

Есть ли какие-то стратегии для более надежного форматирования чего-то подобного?

1 ответ

  1. Вместо

      System.out.printf("   " + square[x][j]);
    

    использовать

      System.out.printf("%4d", square[x][j]);    // 4 positions for right-aligned decimal
    

    и так далее для других подобных заявлений.