我创建了一个名为Fish的课程:
public class Fish {
private String species;
private int size;
//Constructor
public Fish(int x, String s) {
size = x;
species = s;
}
public String getSpecies() { return species; }
public int getSize() { return size; }
public String toString() {
return String.format("A %dcm %s", size, species);
}
}
我还开始创建一个叫做池塘的类,这个类有一个名为'fish'的属性,它包含一系列Fish对象。我不确定如何做到这一点。这是我到目前为止的尝试。我是
public class Pond {
private int capacity;
private Object[] fish; //This is what I am trying to initialize. list of Fish.
private int numFish;
//Capacity Constructor
public Pond(int n, int c) {
n = numFish;
c = capacity;
}
public int getNumFish() { return numFish; }
public boolean isFull() {
boolean isFull = false;
if (numFish >= capacity) {
isFull = true;
}
else {
isFull = false;
}
return isFull;
}
public String toString() {
return String.format("Pond with %d fish", numFish);
}
public void add(Fish aFish) {
if (numFish <= capacity) {
numFish += 1;
fish.add Fish;
}
else {
numFish += 0;
}
}
}
答案 0 :(得分:1)
改变这个:
private Object[] fish;
如下:
private Fish[] fish;
即。这些都是鱼,而不仅仅是任何一种 各种物体(它们不是哺乳动物,例如)。
答案 1 :(得分:1)
在Pond
构造函数中,您将私有字段分配给构造函数参数。我认为应该是相反的方式:
public Pond(final int n, final int c) {
numFish = n;
capacity = c;
}
附注:在编译时声明Pond
构造函数参数final
会prevent出现这种错误。
此外,如果要在运行时展开fish
数组,则array
不是容器类型的最佳选择。 ArrayList<Fish>
是一个更好的选择,因为它可以在运行时扩展。
答案 2 :(得分:1)
以下无效 -
fish.add aFish;
使用数组
fish[numFish] = aFish; //increment numFish after this
您还需要初始化数组
fish = new Fish[capacity];
在你的构造函数中。
答案 3 :(得分:0)
您需要使用ArrayList
而不是Array
,因为ArrayList可以根据需求增长。
看看这段代码。应该帮助你:
public class Fish {
String name;
public Fish(String name) {
this.name=name;
}
public String toString() {
return name;
}
}
然后:
import java.util.*;
public class Pond {
ArrayList<Fish> fishInPond = new ArrayList<>();
public void addFish(Fish e) {
fishInPond.add(e);
}
public void showFishes() {
for (int i= 0; i<fishInPond.size();i++) {
fishInPond.get(i);
}
System.out.println("Fishes in my pond: " + fishInPond);
}
public static void main(String[]args) {
Pond myPond = new Pond();
myPond.addFish(new Fish("Tilapia"));
myPond.addFish(new Fish("cat fish"));
myPond.showFishes();
}
}