java - 创建一个可以从数组列表中删除项目并将其添加到另一个数组列表中的方法(在某些条件下)

标签 java arrays oop methods arraylist

您好,我正在编写一个程序,该程序创建一个方法,可以从数组列表中删除项目并将它们添加到另一个ArrayList(在某些条件下)。这是我应该创建的方法:

名为giveAwayFish()的方法,代表一个人 将他的鱼放回池塘和/或将它们送给另一位渔民。

它将检查这个人的所有鱼(送鱼的人),看看另一位渔民(将收到鱼的人)是否愿意保留任何一条。如果其他渔民想要任何东西,则应将其提供给该渔民。如果渔民不愿意保留鱼,那么这些鱼就必须放回池塘。

我尝试编写这个方法大约一百次,但我一辈子都不知道该怎么做。我能够从人员数组中删除所有鱼,但我不知道如何将它们添加回来。这就是我需要帮助的地方。

这是我的代码(如果有帮助的话):

import java.util.*;

public class Fisher   
{
  private String name;
  private Fish [] fishCaught;
  private int numFishCaught; 
  private int keepSize;
  public static int LIMIT = 10;

  public String getName() 
  {
    return this.name;
  }

  public int getNumFishCaught()
  {
    return this.numFishCaught;
  }

  public int getKeepSize()
  {
    return this.keepSize;
  }

  public Fisher(String n, int k)
  {
    name = n;
    keepSize = k;
  }

  public String toString()
  {
    return(this.name + " with " + this.numFishCaught + " fish as follows:");
  }
  private ArrayList<Fish> fishesCaught = new ArrayList<Fish>();


  public void keep(Fish fish) 
  {
    if(this.numFishCaught < LIMIT)
    {
      fishesCaught.add(fish);
      numFishCaught++;
    }
  }

  public boolean likes(Fish fish)
  {
    if(fish.size >= this.keepSize && fish.species != "Sunfish")
    {
      return true;
    }

    else 
    {
      return false;
    }
  }

  public void listFish() 
  {
    System.out.println(this.toString());

    for(Fish fish : fishesCaught)
    {
      System.out.println(fish.toString());
    }
  }

  public void goFishingIn(Pond pond)
  {
    Fish fish = pond.catchAFish();

    if(likes(fish))
    {
      this.keep(fish);
    }
    else
    {
      pond.add(fish);
    }
  }

  public void giveAwayFish(Fisher fisher, Pond pond)
  {
    Fish fish = fishesCaught;
     if(fisher.likes(fish))
     {
      fishesCaught.clear();
      this.numFishCaught = 0;
     }

  }


} 

最佳答案

这里最大的问题是(是的,还有很多其他问题),在你的 giveAwayFish() 中,你写了

Fish fish = fishesCaught;

但是fishesCaughtList<Fish> 。那甚至无法编译。

我相信你想要做的事情是这样的(在伪代码中):

for (Fish fish : fishesCaught) {
   if (fisher.like(fish)) {
       fisher.keep(fish);
   } else {
       pond.addFish(fish);
   }
}
fishesCaught.clear();

关于java - 创建一个可以从数组列表中删除项目并将其添加到另一个数组列表中的方法(在某些条件下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21897794/

相关文章:

java - android 媒体播放器的替代品?

c++ - 将固定长度的括号括起来的初始化程序列表传递给函数

c++ - 在 C++ 中,我们如何在不使用友元函数的情况下通过对象调用私有(private)函数?

java - Android Docx4j 图像错误

java - 在 Java 中混合声音?

java - 如何使用 JPA 进行多重 SELECT 查询

c++ - 静态声明二维数组 C++ 作为类的数据成员

java - 在 Java 中将像素数组转换为图像

PHP 绑定(bind)参数() : Number of variables doesn't match number of parameters in prepared statement

java - 这段代码是适配器模式的示例吗?