【问题标题】:Multiple methods in one program一个程序中的多种方法
【发布时间】:2014-03-25 10:39:52
【问题描述】:

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

【问题讨论】:

    标签: java class methods symbols


    【解决方案1】:

    在 java 中,一切都在一个对象中。 所以如果你想调用一个类的方法应该使用

    Habitat habitat = new Habitat();
    habitat.stockUp();
    

    【讨论】:

      【解决方案2】:

      stockUp()Habitat 类的实例方法,因此您需要在GoFishEdited 类的main 方法中创建Habitat 的实例,以便从GoFishEdited 调用它。您可以在 Habitat created、h1h2 的任一实例上调用它,如下所示:

      h1.stockUp();
      

      请注意,在您发布的代码中,您需要将整数数组作为参数传递给stockUp(),但看起来在您的代码中您期望stockUp() 返回int[]。如果stockUp() 应该返回一个整数数组,那么您需要将方法签名更改为如下所示:

      public int[] stockUp() {
      
      //do whatever you want this method to do
      
      return arrayOfInts;
      }
      

      【讨论】:

        【解决方案3】:

        您需要使用new Habitat 创建habitat 的实例来调用该方法,或者您需要将stockUp 方法设为静态并使用Habitat.stockUpHabitat 类中调用它。

        【讨论】:

          【解决方案4】:

          既然您已经在 h1 和 h2 中创建了 Habitat 实例,请调用

          h1.stockUp(fishArray)
          

          或者

          h2.stockUp(fishArray)  
          

          取决于你的意思。您声明 stockUp() 方法接受一个 int[],所以您需要传递一个 - 我将其称为 fishArray,因为您似乎代表鱼。此外,您已将 stockUp() 声明为返回 void,因此不要期望它返回一些您可以分配给 fishWeights 的值。在某些时候,您可能会发现引入 Fish 类以更好地概括该概念是个好主意。

          【讨论】:

            猜你喜欢
            • 2011-11-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-06-23
            • 1970-01-01
            • 2023-03-17
            • 1970-01-01
            相关资源
            最近更新 更多