2017-04-30 8 views
1
ArrayList<Brick> tiles = new ArrayList<Brick>(); 
public void init(){ 

    for(int i=0; i<10; i++) { 
      tiles.add(new Brick(30,10,Color.red)); 
    } 
myPrint(tiles); 
} 

private static void myPrint(ArrayList<Brick>tiles) { 
    for (int i = 0; i < tiles.size(); i++) 
     System.out.println(tiles.toString()); 
} 

以上、私はarraylistにBrickオブジェクトを追加しようとしていますが、印刷はできません。ここでGRectのArrayListの印刷方法(Java acm)

はブリッククラスです:私は、コードを実行したときに

public class Brick extends GCompound { 
    public Brick(int width, int height, Color color) { 

     GRect rect = new GRect(width, height); 
     rect.setFilled(true); 
     rect.setFillColor(color);  
    } 

何も現れません。私はtoStringメソッドを追加しようとしましたが、どちらもうまくいきませんでした。 ArrayList<GRect> tiles = new ArrayList<GRect>();も作ってみましたが、どちらも印刷できませんでした。 私の質問は、どのように私はrectangleオブジェクトのarrayListを印刷できますか?

編集:

私は私の目標について明確でなかった場合は、ここで私が達成しようとしているものに類似した何かのスクリーンショットです: enter image description here

私はループに使用してこれを作りましたしかし、私は四角形を削除する必要がある条件を追加するので、ArrayListが最適になると考えました。

+0

をあなたのブリックコンストラクタ内GRectオブジェクトを作成しているが、あなたはありませんよそれを何かに割り当てる - それはちょうど薄い空気の中に消える。どうして?目的は何ですか? –

+0

あなたはあなたの目標から非常に遠いです、あなたはメインの方法を持っていません。また、何かを捨てようとしていますが、絶対に間違っています。オブジェクトのハッシュコードを印刷することに近いです。 – strash

+0

myPrintメソッド –

答えて

1

Brickコンストラクタでは、GRectオブジェクトを作成していますが、参照は保持していません。

ですから、Brickのインスタンス変数としてGRect参照するための参照を保持し、また、以下に示すようにtoString()を上書きする必要があります。

public class Brick extends GCompound { 

    private GRect rect; 

    public Brick(int width, int height, Color color) { 
     this.rect = new GRect(width, height); 
     this.rect.setFilled(true); 
     this.rect.setFillColor(color); 
    } 

    @Override 
    public String toString() { 
     return "Brick{" + 
       "Height=" + rect.getHeight() + 
       "Width=" + rect.getWidth() + 
       "Color=" + rect.getFillColor() + 
       '}'; 
    } 
} 

また、あなたが不要であるforループ内tiles.toString()を呼び出しているあなたのmyPrint()方法ので、以下に示すようにmyPrintメソッドを更新:

private static void myPrint(ArrayList<Brick> tiles) { 
    System.out.println(tiles);//remove for loop and printing tiles calls toString() 
}