繁体   English   中英

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

[英]creating a method that can remove items from an arraylist and add them to another arraylist (under certain conditions)

您好,我正在编写一个程序,该程序创建一种可以从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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM