2015-05-26 2 views
0

У меня есть набор символов x by y, хранящийся в двумерном массиве в java, который я хотел бы распечатать пользователю в удобном отформатированном виде. Будет ли простой способ сделать это в java?Отображение двухмерного массива в java

Вот как я строю мой совет:

board = new int[TotRow][TotCol]; 
+1

Пожалуйста, положить в коде, который объясняет ваше дело –

ответ

0
for (int i = 0; i < x; i++) { 
    for (int j = 0; j < y; j++) { 
     System.out.print(board[i][j] + "\t"); 
    } 
    System.out.println(); 
} 
+2

внутреннего цикла 'System.out.print' вместо –

+0

Это может работать (после замены первого' 'println' к print'), но я склонен избегать использования потому что вы действительно не имеете никакого контроля над тем, как они работают, или вообще ничего не делают. – ajb

+0

можете ли вы добавить какое-то объяснение? –

0

Вы можете распечатать boardtwo dimensional массив как этот

for (int i = 0; i < board.length; i++) { 
    for (int j = 0; j < board[i].length; j++) { 
     System.out.print(board[i][j] + "\t"); 
    } 
    System.out.println(); 
} 
1

Если вы хотите, чтобы число, которое будет дополнено правильно, а также использовать String.format(),

for (int i = 0; i < TotRow; i++) { 
    for (int j = 0; j < TotCol; j++) { 
     System.out.print(String.format("%3d", board[i][j]) + "\t"); 
    } 
    System.out.println(); 
} 

Обратите внимание, что я использовал %3d для форматирования, вы можете использовать формат в соответствии с требованиями вас

0

Вы можете предпочесть одну линию, потому что это легко, Arrays.deepToString(Object[]) Javadoc говорит (частично),

Этот метод предназначен для преобразования многомерных массивов в строки.

System.out.println(Arrays.deepToString(board)); 
0

Поскольку я не хотел полагаться на вкладках, я хотел бы упомянуть некоторые подходы, которые не зависят от них.

Если вы знаете, что все числа в таблице неотрицательные числа, скажем, 4 цифр или менее, вы можете использовать String.format способом, аналогичным ответом Нитин в:

for (int i = 0; i < TotRow; i++) { 
    for (int j = 0; j < TotCol; j++) { 
     System.out.print(String.format("%4d ", board[i][j])); 
    } 
    System.out.println(); 
} 

%4d означающего отформатируйте число, используя ширину в 4 символа, и проложите пробелы слева, если число будет содержать менее 4 символов для печати. Таким образом, если нет 5-значных или более длинных номеров, каждый print будет печатать ровно 5 символов - 4-значное поле для номера и пробел после номера. Это заставит все выстраиваться в линию, если ни одно из чисел слишком велико. Если вы получите число, которое занимает более 4 символов, форматирование будет испорчено.

Вот способ для регулировки ширины столбца, так что это просто достаточно большой, чтобы вместить все значения в таблице, и работает хорошо, если есть отрицательные числа:

int maxWidth = 0; 
for (int i = 0; i < TotRow; i++) { 
    for (int j = 0; j < TotCol; j++) { 
     maxWidth = Math.max(maxWidth, Integer.toString(board[i][j]).length()); 
    } 
} 
String format = "%" + maxWidth + "d "; 
for (int i = 0; i < TotRow; i++) { 
    for (int j = 0; j < TotCol; j++) { 
     System.out.print(String.format(format, board[i][j])); 
    } 
    System.out.println(); 
} 

Примечание: не тестировалось

0

Вы в основном используете только вложенный цикл.

for (int i = 0; i < board.length; i++) { 
    for (int j = 0; j < board[i].length; j++) { 
     System.out.print(board[i][j] + " "); 
    } 
    System.out.println(); 
} 
Смежные вопросы