在线求解,好难啊,这个java题有人可以教我一下吗

初始有一个刚出生的细菌,新细菌20分钟后可进行繁殖,每30分钟繁殖两个(注:新繁殖出来的细菌也可以繁殖,20分钟生第一代,50分钟生第二代),但是每个细菌最多可以繁殖3代,细菌150分钟后自然死亡,请用面向对象思想设计实现计算n分钟内细菌总数

    @Test
    public void test1() {
      Integer limitTime = 80;
      Integer nowTime = 1;
      List<Cell> cellList = new ArrayList<>();
      Cell cell = new Cell(0);
      cellList.add(cell);
      for(int i=0;i<limitTime;i++){
        List<Integer> num = new ArrayList<>();
        for(int j = 0;j<cellList.size();j++){
          if(cellList.get(j).getDieTime()==nowTime){
            num.add(j);
          }
        }
        for(int j = 0;j<num.size();j++){
          cellList.remove(num.get(j));
        }
        for(int j = 0;j<cellList.size();j++){
          if(nowTime-cellList.get(j).getBirthTime()==20){
            Cell cell1 = new Cell(nowTime);
            cellList.add(cell1);
          }else if((nowTime-cellList.get(j).getBirthTime()-20)%30==0){
            Cell cell1 = new Cell(nowTime);
            cellList.add(cell1);
          }
        }
        nowTime = nowTime + 1;
      }
      System.out.println(cellList.size());
    }

  public class Cell {
    private Integer birthTime;
    private Integer dieTime;

    Cell(Integer nowTime) {
      this.birthTime = nowTime;
      this.dieTime = nowTime + 150;
    }

  }

细菌类:出生的时间,死亡时间;构造方法直接设置死亡时间为出生时间后的150分钟

从i=0开始循环直到输入的时间,每次循环都先剔除已经到死亡时间的细菌,再循环判断细菌是否已经到增殖时间

思路:

1.设计一个细菌类,

2.细菌类记录:自已出生的时间,存活时间

3.细菌类里加一个定时器/或线程,定时器定时的累加细菌的存活时间,存活时间到达20分钟时New出两个新的细菌,然后每30分钟再New现两个细菌,150分钟后Dead

4.加一个全局的list或map做为细菌库,新New出来的细菌加入到细菌库中,死亡的细菌移出细菌库。

5.统计细菌库就可以知道当前的细菌总数

希望对你有所帮助,麻烦关注下我的博客。我会持续发技术文章。觉得可以的话欢迎点赞

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632