我正在尝试将数组(fishWeights)设置为使用方法找到的值。除了当我尝试编译它时:
public class GoFishEdited {
public static void main(String[] args) {
System.out.println("\nProject 1, Stage 3\n");
Habitat h1 = new Habitat();
Habitat h2 = new Habitat();
int[] fishWeights = stockUp();
System.out.println("Start with some weights:");
for (int i : fishWeights) {
System.out.print(i + " ");
}
System.out.println("\n\nMake fish of those weights.\n");
Fish[] fishGroup = new Fish[fishWeights.length]; // array of Fish
for (int i=0; i < fishWeights.length; i++) {
fishGroup[i] = new Fish(fishWeights[i]); // make fish
}
}
}
它声明无法找到符号stockUp()。它在这个文件中:
public class Habitat {
ArrayList stringer = new ArrayList();
public int maxCount=25;
public int minCount=9;
public int maxWeight=10;
public int minWeight=1;
public int catchProbability=30; //0.3
public void stockUp(int[] fishArr){
int numofF = minCount + (int)(Math.random() * ((maxCount - minCount) + 1));
for(int i = 0; i<numofF; i++){
fishArr[i] = minWeight + (int)(Math.random() * ((maxWeight - minWeight) + 1));
}
}
public Habitat(){
}
public void addFish(Fish f) {
stringer.add(f);
}
public void removeFish(Fish f){
stringer.remove(f);
}
public void printFish(){
System.out.println(stringer);
}
}
所以stockUp存在,我似乎无法让getFishEdited找到它。
答案 0 :(得分:1)
stockUp()
是Habitat
类的实例方法,因此您需要在Habitat
类的GoFishEdited
方法中按顺序创建main
的实例从GoFishEdited
拨打电话。您可以在创建的Habitat
,h1
或h2
的任一实例上调用它,例如:
h1.stockUp();
请注意,在您发布的代码中,您需要将一个整数数组作为参数传递给stockUp()
,但在您的代码中看起来好像stockUp()
返回{{1} }}。如果int[]
应该返回一个整数数组,那么你需要将方法签名更改为:
stockUp()
答案 1 :(得分:1)
在java中对象中的所有内容。 因此,如果要调用方法表单,则应使用
类Habitat habitat = new Habitat();
habitat.stockUp();
答案 2 :(得分:0)
您需要使用habitat
创建new Habitat
的实例来调用方法,或者您需要将方法stockUp
设为静态并在{{1}中调用它} class使用Habitat
。
答案 3 :(得分:0)
由于您已在h1和h2中创建了Habitat的实例,请调用
h1.stockUp(fishArray)
或
h2.stockUp(fishArray)
取决于你的意思。你声明stockUp()方法接受一个int [],所以你需要传递一个 - 我称之为fishArray,因为你似乎代表了鱼。此外,您已将stockUp()声明为返回void,因此不要指望它返回一些您可以分配给fishWeights的值。在某些时候,你可能会发现引入一个Fish类来更好地包装这个概念是个好主意。