2017-02-13 4 views
-4

プログラムで私のクマのそれぞれの出力を得るために私のtoStringメソッドを書く方法を見つけるのが苦労しています。出力に "Race - Points - TotalPoints"と表示させたい。しかし、残りのコードはコンパイルされているように見えますが、それを正しく取得することはできません。ArrayListのtoStringメソッドを書くには?

toStringを両方のクラスで定義する必要がありますか、それとも何が欠けていますか?私は似ている他のいくつかの質問をチェックしましたが、それはalternativのようですか?しかし、最も効果的にどのように実装されていますか?クマのクラスオフまず

import java.util.ArrayList; 

public class Bear { 

    public static void main(String[] args) { 

     Bear b = new Bear("Sebastian", 100, "Brownbear"); 
     ArrayList <Bear> bears = new ArrayList<Bear>(); 
     bears.add(b); 

    } 

    private String name; 
    private int points; 
    private String race; 


    public Bear(String name, int points, String race) { 
     this.name = name; 
     this.points = points; 
     this.race = race; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getRace() { 
     return race; 
    } 

    public void setRace(String race) { 
     this.race = race; 
    } 

    public int getInitialPoints() { 
     return points; 
    } 

    public int getPoints() { 
     int oldPoints = points; 
     points /= 2; 
     return oldPoints; 
    } 
} 

第二BearCollectionクラス:

import java.util.ArrayList; 

public class BearCollection { 

    ArrayList <Bear> bears = new ArrayList<Bear>(); 

    int totalPoints = 0; 

    public void add (Bear b) { 

     for (Bear inCollection : bears) { 
      if(b.getName().equals(inCollection.getName())) { 
       return; 
      } 
     } 

     for (Bear inCollection : bears) 
     if (b.getRace().equals(inCollection.getRace())) { 

      for(int i = bears.size(); i > 0; i --) { 
       if(bears.get(i).getRace().equals(b.getRace())) { 
        b.getPoints(); 
        i = 0; 
       } 
      } 
     } 

     totalPoints += b.getInitialPoints(); 


     bears.add(b) ; 
    } 

public String toString(){ 

    return ; 
} 
+0

これをご覧くださいhttp://stackoverflow.com/questions/18129505/how-can-i-override-the-tostring-method-of-an-arraylist-in-java – freedev

+2

真剣にあなたが「帰り」の問題を抱えていると言っているのではないですか? –

+0

当然のことながら、私は自分のトーストが完全に空白であることを理解しています。私はちょうどtoStringメソッドをそこに置いて、どこに行くべきかを示しました。 (しかし、私は完全な初心者です) – wilhelmeriksson

答えて

0

言われたように、toStringメソッドをオーバーライドするだけです。パフォーマンスのためにStringBuilderではなく、String連結を使用します。

import java.util.*; 

public class ans{ 
    public static void main(String[] args){ 
    Bears bears = new Bears(); 
    bears.add(new Bear()); 
    bears.add(new Bear()); 
    bears.add(new Bear()); 

    System.out.println(bears); 
    } 
} 

class Bear{ 
    public String toString(){ 
    return "I am a bear"; 
    } 
} 

class Bears{ 
    private ArrayList<Bear> bears = new ArrayList<Bear>(); 

    public void add(Bear bear){ 
    bears.add(bear); 
    } 

    public String toString(){ 
    StringBuilder str = new StringBuilder(); 
    if(!bears.isEmpty()){ // If there is no bears, return empty string 
     str.append(bears.get(0)); // Append the first one 
     for(int index = 1; index < bears.size(); index++){ // For all others 
     str.append(" - "); // Append a separator and the bear string 
     str.append(bears.get(index)); 
     } 

    } 
    return str.toString(); 
    } 
} 

編集は一つを除いてセパレータをすべての項目を関連付ける、-B-C-Dを印刷します。 A(-B)(-C)( - D)または(A - )(B - )(C-)Dである。最初と最後のマークを簡単に追加できます。

+0

ご協力いただきありがとうございます! – wilhelmeriksson

0

問題を解決するだろうベアクラスのtoStringをオーバーライド。

0

あなたがクマのコレクション全体を印刷する必要がある場合、あなたは、クマに何かのtoStringを与える必要があるだろう:次に、BearCollectionののtoStringに、単に各ループのために書く

return "Bear("+name+","+points+","+race+")"; 

をコレクション内の各クマのtoStringを呼び出して、それらを印刷します。

関連する問題