创建一个从另一个方法列出鱼的方法

时间:2014-02-01 19:47:07

标签: java arrays class object methods

我正在尝试创建一个名为listFish()的方法,该方法列出(使用System.out.println)池塘中的所有鱼类。

我创建了一个toString方法,如下所示:

public String toString() {
    return("A " + this.size + " cm " + this.species);
}

我还创建了一个add()方法,该方法只需要一个Fish参数,并将鱼添加到池塘中,前提是池塘未满。如果池塘满负荷,它什么都不做。 (如果有问题请告诉我):

public Fish add(Fish x) {
    if (this.numFish < fishes.length) {
        return x;
    } else {
        return null;
    }
}

我遇到的问题尤其是创建了一个listFish()方法,该方法列出(使用System.out.println)池塘中的所有鱼类,如下所示:(它从下面的测试代码中获取此信息)

  • 一只4厘米的翻车鱼
  • 25厘米派克
  • 20厘米低音
  • 30厘米鲈鱼
  • 4厘米的翻车鱼
  • 一个15厘米的派克
  • 一个9厘米的派克
  • 12厘米低音
  • 5厘米的翻车鱼
  • 12厘米的翻车鱼

 public class PondTestProgram  {
        public static void main(String args[]) {
            // Create a pond with 10 fish
            Pond pond = new Pond(15);
            pond.add(new Fish(4, "Sunfish"));
            pond.add(new Fish(25, "Pike"));
            pond.add(new Fish(20, "Bass"));
            pond.add(new Fish(30, "Perch"));
            pond.add(new Fish(4, "Sunfish"));
            pond.add(new Fish(15, "Pike"));
            pond.add(new Fish(9, "Pike"));
            pond.add(new Fish(12, "Bass"));
            pond.add(new Fish(5, "Sunfish"));
            pond.add(new Fish(12, "Sunfish"));
            pond.listFish();

我当时认为这个方法可能看起来像这样但到目前为止还没有成功:

public void listFish() {
    System.out.println(toString().add());
}

所以基本上它需要添加方法和toString并打印出鱼的长度和鱼的名字,但到目前为止,我一直在收到错误。感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:1)

List<Fish> pond = new ArrayList<Fish>();

//添加在arrayList中添加鱼类的方法

public void add(Fish x) {
           if (pond.size() < capacity) {
                pond.add(x);
            } 
        }

// listFish()方法打印池塘里的鱼

public void listFish() {
   for (Fish f : pond){
     System.out.println(f.toString());
   }
}

答案 1 :(得分:1)

我会保留一个实例ArrayList,并在调用add方法时将鱼添加到ArrayList。

像这样:

ArrayList<Fish> fishes = new ArrayList<Fish>();

public void add(Fish fish)
{
    // if the ArrayList contains less than the total number of allowed fishes
    if (fishes.size() < this.numFish) {
        fishes.add(fish);
    }
}

然后添加此方法以列出池塘中的所有鱼(来自ArrayList):

public void listFish() {

    // iterate for every fish in the fishes ArrayList
    for (Fish fish : fishes) {
        System.out.println(fish.toString());
    }
}

修改:这是我使用我的策略修改过的Pond课程,并且修正了错误:http://pastie.org/8689817

答案 2 :(得分:0)

你的池塘add方法并没有真正为池塘添加鱼类。让它真正添加到池塘的鱼。然后在listFish中,只需循环已经添加到池塘中的鱼并打印出来。

答案 3 :(得分:0)

添加应该将项添加到列表中,在这种情况下它看起来像鱼。

List<Fish> fishes = new ArrayList<Fish>();
int numFish = 10; // to keep max size

public void add(Fish x) {
    if (fishes.length < numFish) {
        fishes.add(x);
    }
}

然后迭代每个项目并打印出来。

public void listFish() {
   for (Fish f : fishes){
     System.out.println(f.toString());
   }
}

并且在Fish类中,覆盖格式的toString。