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