从数组返回非 null 的值。爪哇岛



因此,我在下面的方法称为catchafish(),该方法旨在从阵列(鱼)中返回一个随机对象(鱼)。这种方法主要起作用,但是我试图使其不返回任何空元素,而阵列中的鱼数则高于零。一旦阵列"鱼"中没有更多的鱼类物体,就可以将其返回。我不能使用阵列清单是我的修订方法:

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鱼的索引,然后将其移动以代替从阵列中移除的随机鱼。

相关内容

  • 没有找到相关文章

最新更新