一个程序中的多个方法

时间:2014-02-23 23:49:37

标签: java class methods symbols

我正在尝试将数组(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找到它。

4 个答案:

答案 0 :(得分:1)

stockUp()Habitat类的实例方法,因此您需要在Habitat类的GoFishEdited方法中按顺序创建main的实例从GoFishEdited拨打电话。您可以在创建的Habitath1h2的任一实例上调用它,例如:

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类来更好地包装这个概念是个好主意。