我正在尝试创建一个名为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
)池塘中的所有鱼类,如下所示:(它从下面的测试代码中获取此信息)
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
并打印出鱼的长度和鱼的名字,但到目前为止,我一直在收到错误。感谢任何帮助,谢谢!
答案 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。