2017-12-10 7 views
6

以下のコードを使用して配列を作成して配列に挿入しましたが、配列の印刷に関してはArrays.toString()関数を使用しているときに期待した結果が得られません。配列の要素をArrays.toString()で出力する

よりもむしろ

newArray: [2, 4, 6] 
newArray: [8, 10, 12] 
etc.. 

を印刷するには、コード

newArray: [[[email protected], [[email protected], [[email protected], [[email protected]] 
newArray: [[[email protected], [[email protected], [[email protected], [[email protected]] 
etc.. 

を出力します。

public static void main(String[] args) { 
    int[][] newArray = new int[4][3]; 
    int number = 2; 
    for (int rowCounter = 0; rowCounter < newArray.length; rowCounter++) { 
     for (int colCounter = 0; colCounter < newArray[rowCounter].length; colCounter++) { 
      newArray[rowCounter][colCounter] = number; 
      number += 2; 
     } 
     System.out.println("newArray: " + Arrays.toString(newArray)); 
    } 
} 

これですべてのヘルプははるかに高く評価されるだろう。

+0

ここで結果は配列内の配列のアドレスです。実際の値ではありません –

答えて

12

あなたはtoStringの代わりにdeepToStringを使用することができます。

System.out.println(Arrays.deepToString(newArray)); 
+0

なぜtoStringが機能しなかったのか教えてください。 –

+1

@LalitVerma 'System.out.println(new int [] {1,2,3});'を使用するとどうなりますか? –

+1

何か新しいことを学んだ –

3

は、あなたが望む結果で

Arrays.deepToString(newArray) 
2

を試してみて、あなたが宣言されている配列がone-dimensionalであることを確認してください。あなたは正しく使用していないtwo dimensional arrayと宣言しました。
変更int[][] newArray to int[] newArray

+0

私はあなたが意味するところを見ます。しかし、私はもっと明確にすべきだったはずですが、私が示した結果は実際の結果のスニペットに過ぎません。実際には、複数の行があります。私は今これを編集します。 –

2

あなたはそれがObject.toStringメソッドを呼び出します内部toString(Object[] a)を呼び出します。

(obj == null) ? "null" : obj.toString(); 

あなたはそれがオブジェクト型配列の配列をループし、文字列に変換されますでしょうdeepToString代わりのtoStringにmethod.Internallyを持って述べたように、すべての要素を印刷したい場合。

例では、あなたのケースのすべての配列要素はint配列で、toStringを呼び出します。

関連する問題