Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建从arraylist随机返回鱼的方法_Java_Arrays_Object_Methods_Arraylist - Fatal编程技术网

Java 创建从arraylist随机返回鱼的方法

Java 创建从arraylist随机返回鱼的方法,java,arrays,object,methods,arraylist,Java,Arrays,Object,Methods,Arraylist,您好,我在创建一个名为catchAFish()的方法时遇到问题,该方法从arraylist中随机返回一条鱼(我在其中创建了另一个添加到它的方法)。如果索引为空,则将其替换为null。下面提供了我的尝试,这是我的pond课程: import java.util.ArrayList; public class Pond { private int numFish; ArrayList<Fish> fishes = new ArrayList<

您好,我在创建一个名为catchAFish()的方法时遇到问题,该方法从arraylist中随机返回一条鱼(我在其中创建了另一个添加到它的方法)。如果索引为空,则将其替换为null。下面提供了我的尝试,这是我的pond课程:

import java.util.ArrayList;

    public class Pond 
    {
     private int numFish;
     ArrayList<Fish> fishes = new ArrayList<Fish>();

     public int getFish() {
      return this.numFish;
     }

     public Pond(int numFish) {
      this.numFish = numFish;
     }

     public boolean isFull() {
      return numFish == fishes.size();
     }

     public String toString() {
      return("Pond with " + this.numFish + " Fish");
     }

     public void add(Fish fish) {

      if(fishes.size() < this.numFish) {
       fishes.add(fish);
      }
     }

     public void listFish() {

         // iterate for every fish in the fishes ArrayList
         for (Fish fish : fishes) {
             System.out.println(fish.toString());
         }
     }

    public void catchAFish()
    {
    int randomNumber = 1 + (int) (Math.random() * fishes.size() - 1);

    fishes.remove(randomNumber);

    for(int j = 0; j < fishes.size(); j++)
    {
    System.out.println(fishes.get(j));

    }
    }

    }
import java.util.ArrayList;
公共池塘
{
私家努姆鱼;
ArrayList=新的ArrayList();
public int getFish(){
返回这个.numFish;
}
公共池塘(内努姆菲什){
this.numFish=numFish;
}
公共布尔值isFull(){
return numFish==fishes.size();
}
公共字符串toString(){
返回(“带“+this.numFish+”鱼的池塘”);
}
公共空间添加(鱼){
if(fishes.size()
一切正常。当我将所有的fish添加到arraylist中时,它就工作了,当我只想在程序正常运行时运行它(随机索引中的fish被删除),但是当我使用下面的测试程序代码运行它时,它就不工作了。我不断地犯错误。非常感谢您的帮助,谢谢

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();
        System.out.println("");



       // Now catch 7 random fish
        System.out.println("Catching 7 random fish as follows ...");
       for (int i=0; i<7; i++) 
        System.out.println(pond.catchAFish());
        System.out.println();

        // Now show what is left in the pond
        pond.listFish();

        // Now try to catch 5 random fish ... but only 3 actually left
        System.out.println("Catching 5 random fish as follows ...");
        for (int i=0; i<5; i++) 
            System.out.println(pond.catchAFish());
        System.out.println();

        // Now show what is left in the pond
        pond.listFish();



    }
}
公共类PondTestProgram
{
公共静态void main(字符串参数[])
{
//创建一个有10条鱼的池塘
池塘=新池塘(15);
池塘。添加(新鱼(4,“太阳鱼”);
池塘。添加(新鱼(25,“梭子鱼”);
池塘。添加(新鱼(20,“鲈鱼”);
池塘。添加(新鱼(30,“鲈鱼”);
池塘。添加(新鱼(4,“太阳鱼”);
池塘。添加(新鱼(15,“梭子鱼”);
池塘。添加(新鱼(9,“梭子鱼”);
池塘。添加(新鱼(12,“鲈鱼”);
池塘。添加(新鱼(5,“太阳鱼”);
添加(新鱼(12,“太阳鱼”);
塘鳢();
System.out.println(“”);
//现在抓到7条随机的鱼
System.out.println(“捕获7条随机鱼,如下…”);

对于(int i=0;i您的
catchAFish
方法返回
void
。您可能是想让它返回从池塘中取出的鱼

尝试将签名更改为
public Fish catchAFish()

Fish caught = fishes.remove(randomNumber);
…
return caught;

您不能从catchAFish退回鱼,因此无法打印它。 java中的数组是零索引的,所以随机代码也是错误的

public Fish catchAFish()
    {
    if (fishes.size() == 0) {
        throw new Exception("No fish to be found here..");
    }

    int randomNumber = (int) (Math.random() * fishes.size());
    return fishes.remove(randomNumber);
    }

悲伤今天有很多可疑的问题。是否有课程讲师建议人们在这里寻求家庭作业帮助?yeap@PaulHicks她说,如果你们困在某个地方,你们会很棒列表上没有操作员。
remove()已经返回被删除的值。谢谢响应!@ USER 32597,但我一直在错误:鱼F=鱼[随机数];它说:错误:需要数组,但是java. UTIL.AARYLIST发现。Guillaume Poussel的每个评论都固定了……这里大部分是C++的家伙。