2013-10-29 39 views
29

私は2D配列を印刷する最良の方法が何であるか疑問に思っていました。これは私が持っているいくつかのコードであり、これは良い練習であるかどうかだけは不思議だった。私がこのコードで見つけた場合は、私が他の間違いで修正してください。ありがとう!Java - 2D配列を印刷する最も良い方法は?

int rows = 5; 
int columns = 3; 

int[][] array = new int[rows][columns]; 

for(int i = 0; i<rows; i++) 
    for(int j = 0; j<columns; j++) 
     array[i][j] = 0; 

for(int i = 0; i<rows; i++) 
{ 
    for(int j = 0; j<columns; j++) 
    { 
     System.out.print(array[i][j]); 
    } 
    System.out.println(); 
} 
+3

どのような定義でベスト? –

+0

実際の配列の長さを使用すると、forループがより安全になります。 –

+1

この質問は特定の質問なしでコードを再検討することであり、[codereview.se] –

答えて

77

簡単な方法で印刷できます。以下

利用1D配列

int[] array = new int[size]; 
System.out.println(Arrays.toString(array)); 
+3

2DバージョンがOKでない単一の行、にすべてを印刷:( –

+0

@DangManhTroungは、印刷行でforループを作成します。 – JakeWilson801

+3

これはもう少し後ですが、これはすべてを別々の行に出力します。[これを答えたからこれを取った](https://stackoverflow.com/questions/12845208/how-to-print-two-dimensional-array-like-table#17423410) 'System.out.println(Arrays.deepToString – wanderer0810

5

を印刷するには、以下の2次元配列

int[][] array = new int[rows][columns]; 
System.out.println(Arrays.deepToString(array)); 

使用を印刷するあなたが持っているものは何も問題はありません。ダブルネストされたforループは、コードを読んだ人が簡単に消化する必要があります。

しかし、以下の処方は、より密度が高く、より慣用的なjavaです。私は後でより早くArraysCollectionsのような静的ユーティリティクラスのいくつかを掘り下げることをお勧めします。豊富な定型文は、効率的な使用によって削られることがあります。

+0

この解決策では、配列の左上隅に(0,0)が表示されます(これは、CSのほとんどの項目の規則です。 GUI配置または画像内のピクセル位置として)。多くの非csシナリオでは、(0,0)が左下隅にあることを望みますが、その場合foreachループは機能しません。 –

1

@アシカの答えは、(0,0)が通常のCS規約では左上隅に表示されるようにしたい場合にはうまくいきます。あなたは、通常の数学の規則を使用し、左下隅に(0,0)を置くことを好むだろうが、あなたはこれを使用することができる場合:

LinkedList<String> printList = new LinkedList<String>(); 
for (char[] row: array) { 
    printList.addFirst(Arrays.toString(row));; 
} 
while (!printList.isEmpty()) 
    System.out.println(printList.removeFirst()); 

をこれがで順序を逆にする(最終ファーストアウト)LIFOを使用しました印刷時間。

6

インデックスで算術演算を行う必要がない場合は、一般的にはforeachが好きです。

私が推測するのが最善です
for (int[] x : array) 
{ 
    for (int y : x) 
    { 
     System.out.print(y + " "); 
    } 
    System.out.println(); 
} 
3

for (int[] row : matrix){ 
    System.out.println(Arrays.toString(row)); 
    } 
1
|1 2 3| 
|4 5 6| 

値を印刷するには、以下のコードを使用してください。このようになります。

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

出力(1行の行列全体):

[[1,2,3],[4,5,6]] 
5

シンプルでクリーンな方法は、2次元配列を印刷します。

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]")); 
関連する問題