gpt4 book ai didi

java - 从数组中返回不为空的值。 java

转载 作者:行者123 更新时间:2023-12-02 06:15:47 25 4
gpt4 key购买 nike

所以我在下面有一个名为 catchAFish() 的方法,该方法旨在从数组(fish)中返回一个随机对象(Fish)。此方法大部分有效,但我试图使其在数组中的 Fish 数量大于零时不返回任何空元素。一旦数组“fish”中不再有 Fish 对象,则允许返回 null。我无法使用 arraylists 这是我修改后的方法:

public Fish catchAFish(){
Fish aFish = null;
if (numFish > 0){
int idx = new Random().nextInt(fish.length);
if (fish[idx] != null){
aFish = fish[idx];
numFish -= 1;
fish[idx] = null;
if (fish[idx] == null){
catchAFish();}
if (numFish == 0){
;}
}}
return aFish;

}

最佳答案

解决这个问题的一个简单方法是生成一个随机索引一次,然后向前遍历数组,直到遇到非空元素,或者转到数组的末尾。到达末尾后,将索引重置为零,然后继续。如果达到最初生成的随机索引,则数组中没有鱼,因此您应该返回 null

这种方法的一个问题是,鱼被发现的概率不均:前面有较宽的 null 填充间隙的鱼被捕获的风险更高。解决此问题的一种方法是将所有非 null 鱼集中到数组的前面,保留最后一个非null 鱼的索引,然后将其移动代替从数组中删除随机鱼。

关于java - 从数组中返回不为空的值。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21501644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com