Форматирование массива Java 2d?

1

Я там, у меня проблемы с форматированием этого 2d массива. Я думал о том, как делать system.out.printf, но каждый раз, когда я делаю что-то вроде, возможно,% 2f или что-то вроде этого, он не работает.

  public static void main(String[] args) {
    int t,i;
    int[][] table = new int[5][6];

    for (t = 0; t < 5; t++) {
        for (i=0;i < 6; i++) {
            table[t][i] = (t*6)+i+1;
            System.out.print(table[t][i] + "  ");
        }
        System.out.println();
    }

}

}

This is the output:

1  2  3  4  5  6  
7  8  9  10  11  12  
13  14  15  16  17  18  
19  20  21  22  23  24  
25  26  27  28  29  30  

Вывод должен иметь правильное выравнивание пространств следующим образом: http://prntscr.com/6kn2pq

  • 0
    Вы можете использовать \t если числа не слишком велики.
Теги:

3 ответа

0
Лучший ответ

Используйте format:

System.out.format("%4d", table[t][i]);

Результат выглядит следующим образом:

   1   2   3   4   5   6
   7   8   9  10  11  12
  13  14  15  16  17  18
  19  20  21  22  23  24
  25  26  27  28  29  30

Или, если вы предпочитаете выравнивать числа слева:

System.out.format("%-4d", table[t][i]);

Что приводит к этому результату:

1   2   3   4   5   6   
7   8   9   10  11  12  
13  14  15  16  17  18  
19  20  21  22  23  24  
25  26  27  28  29  30  
1

Взгляните на PrintStream#printf и String#format и Formatted Strings

В принципе, для каждой строки каждый столбец должен быть сформирован, чтобы иметь как минимум два пробела...

System.printf("%2d", table[t][i])

Следующая проблема исходит из того факта, что для последующих столбцов требуется дополнительное пространство между ними;)

System.printf("%2d%4s", table[t][i], "")

Что может привести к чему-то вроде...

 1     2     3     4     5     6    
 7     8     9    10    11    12    
13    14    15    16    17    18    
19    20    21    22    23    24    
25    26    27    28    29    30    
  • 0
    или просто добавьте пробелы в формате ...printf("%2d ",... не так сложно для чтения (в конечном итоге легче, если будет больше полей).
  • 0
    @CarlosHeuberger В зависимости от ваших требований, я считаю, что использование %4s легче читать в коде, но это я
0

Вы должны использовать printf вместо print

System.out.printf("%3d", table[t][i]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню