2012-01-30 23 views
0

私はオブジェクトを含む2次元配列を持っています。誰も私はこの配列を印刷することができます知っていますか?私は次のコードを使用すると、シンボルを印刷する。Javaのオブジェクトの2次元配列を印刷

Humans [][]cells= new Humans [7][7]; 

for (int row=0; row<cells.length; row++) { 
     for (int col=0; col<cells[row].length; col++) { 


      System.out.print(" " + cells[row][col]); 


      } 
} 
+0

出力例を先に進むことはできますか? –

+0

一般的な設定が正しいように見えますが、 'Human'の' .toString() 'メソッドを見なければ、それが何をするのか正確には分かりません。' Human'で定義されていない場合はどこから継承されます。 – FatalError

答えて

3

文字列連結に含める場合は、人間のオブジェクトにtoString()を追加する必要があります。

public String toString() { 
    return "Name: " + name + " age: " + age + " shoe size: " + shoeSize; 
} 
1

あなたはtoStringを使用し、2D配列内のインスタンスが適切に実装することを確認する必要があります。

Human current = cells[row][col]; 
// possibly do a null check 
System.out.print(current.toString()); 

のようなものがHumantoStringを実装するようにしてくださいあなたの最も内側のループでは

0

人間のクラスでtoString()メソッドをオーバーライドし、人間のために印刷したいものを印刷します。次に、配列を印刷するには、

Arrays.toString(cells); 

を使用してください。

1

あなたの代わりに、その後(私は名前やものを仮定している)したいクラスの任意の詳細を印刷するために、あなたの人間クラスのtoStringメソッドをオーバーライドする必要があると:

cells[row][col] 

あなたが書く必要があります。

cells[row][col].toString() 
0

あなたは、あなたのニーズに合わせて、クラスの人間でのtoStringをオーバーライドする必要があります。

0

まず、人間のインスタンスの内容を表す文字列を返すには、人間のオブジェクトのtoString()メソッドをオーバーライドする必要があります。

次に、内側のforループが完了した後に新しい行を印刷することをお勧めします。そうしないと、2D配列全体の内容全体を1行に印刷しますここに)。

1

@hvgotcodesは、HumanクラスがtoStringメソッドを実装していることを確認する必要があると述べています。

for(int i = 0; i < cells.length; i++){ 
    for(int j = 0; j < cells[i].length; j++){ 
     System.out.print(cells[i][j]); //invokes toString method in Human.. 
     if(j < cells[i].length -1) 
      System.out.print(", "); 
     } 
     System.out.println(); 
    } 
} 
:あなたは書くことができ、これらのオブジェクトのあなたの2次元配列を印刷するには

class Human { 
    int age; 
    public Human(int age){ 
     this.age = age; 
    }  
    @Override 
    public String toString(){ 
     return "[Human: age :=" + age + "]"; //or whatever's appropriate! 
    } 
} 

:人間は1つだけの数(人の年齢)が含まれている場合たとえば、最も基本的には、それは次のようになります。