web-dev-qa-db-ja.com

Java-2D配列を印刷する最良の方法は?

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();
}
46
Chip Goon Lewin

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

以下を使用して2D配列を印刷します

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

以下を使用して1D配列を印刷します

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

インデックスを使用して算術演算を行う必要がない場合は、一般にforeachを使用します。

for (int[] x : array)
{
   for (int y : x)
   {
        System.out.print(y + " ");
   }
   System.out.println();
}
19
snr

2D配列を印刷するシンプルでクリーンな方法。

System.out.println(Arrays.deepToString(array).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));
16
matthewpliddy

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

とはいえ、次の定式化はより密度が高く、より慣用的なJavaです。 ArraysCollections のような静的ユーティリティクラスのいくつかを後ほど早く突くことをお勧めします。ボイラープレートのトンは、効率的に使用することで削ることができます。

for (int[] row : array)
{
    Arrays.fill(row, 0);
    System.out.println(Arrays.toString(row));
}
7
ashika

それが最高だと思う:

   for (int[] row : matrix){
    System.out.println(Arrays.toString(row));
   }
4
Plcode

改行付きの2ライナー:

for(int[] x: matrix)
            System.out.println(Arrays.toString(x));

改行なしのライナー:

System.out.println(Arrays.deepToString(matrix));
2
suvojit_007
|1 2 3|
|4 5 6| 

以下のコードを使用して値を印刷します。

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

出力は次のようになります(1行のマトリックス全体)。

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

@Ashikaの答えは、通常のCS規則に従って、(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(後入れ先出し)を使用して、印刷時に順序を逆にします。

1
Max von Hippel

From Oricle Offical Java 8 Doc

public static String deepToString(Object[] a)

指定された配列の「ディープコンテンツ」の文字列表現を返します。配列に他の配列が要素として含まれている場合、文字列表現にはその内容などが含まれます。このメソッドは、多次元配列を文字列に変換するために設計されています。

0
ZhaoGang

これを試して、

for (char[] temp : box) {
    System.err.println(Arrays.toString(temp).replaceAll(",", " ").replaceAll("\\[|\\]", ""));
}
0
RAN_0915