95

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();
}
4

14 に答える 14

30

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

for (int[] x : array)
{
   for (int y : x)
   {
        System.out.print(y + " ");
   }
   System.out.println();
}
于 2017-01-08T13:25:34.893 に答える
12

あなたが持っているものに問題はありません。二重にネストされた for ループは、コードを読んでいる人なら誰でも簡単に理解できるはずです。

とはいえ、次の定式化はより密度が高く、より慣用的な Java です。ArraysCollectionsのような静的ユーティリティ クラスのいくつかを遅かれ早かれ調べてみることをお勧めします。それらを効率的に使用することで、大量のボイラープレートを削ることができます。

for (int[] row : array)
{
    Arrays.fill(row, 0);
    System.out.println(Arrays.toString(row));
}
于 2013-10-29T02:00:14.103 に答える
2

@Ashikaの答えは、標準の行列規則に従って、左上隅に (0,0) を表示したい場合に素晴らしく機能します。ただし、標準座標系のスタイルで (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 (Last In First Out) を使用して、印刷時に順序を逆にしました。

于 2016-03-03T18:06:00.147 に答える