首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java计时器中传播疾病的公式

在java计时器中传播疾病的公式
EN

Stack Overflow用户
提问于 2021-05-19 20:08:34
回答 1查看 57关注 0票数 0

我有一个公式来设置病毒传播的初始速度,我希望它随着感染人数的增加而增加。所以我在java定时器中创建了一个公式,但是当我启动我的程序时,速度是恒定的。

代码语言:javascript
复制
 void setInfected() {

        Virus virus = new Virus(this);
        spreadSpeed  = (int)( (density + density) +
                (climate * virus.coldResistFactor) + (climate * virus.heatResistFactor) +
                (economy * virus.medResistFactor) + (tourism * virus.airEffFactor) +
                (humidity * virus.touchEffFactor) + (dead * virus.plagueFactor));
        deadSpeed = (int)( (density * virus.lethalFactor) );
        spreadTimer = new Timer(1000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(!Game.isPaused) {
                    infected += spreadSpeed;
                    population -= infected;
                    dead += deadSpeed;
                    infected -= dead;
                    spreadSpeed = population > 0 ? spreadSpeed + ( infected / population ) : 0;
                    deadSpeed = population > 0 ? ( deadSpeed * ( infected * virus.lethalFactor ) ) / population : 0;
                    System.out.println("infected: " + infected);
                    System.out.println("dead: " + dead);
                    System.out.println("population: " + population);
                }
            }
        }); 
        Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            spreadTimer.start();
        }
    });
    thread.start();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 20:24:35

看起来你的spreadSpeed是一个整数。正因为如此,你对它所做的任何除法运算都会四舍五入。

由于您没有将(infected / population)转换为整数,因此它们可能都是整数。这意味着除法也将向下舍入,这将导致0,直到感染人数超过人口。

要解决此问题,您可以将spreadSpeed设置为双精度型而不是整型,并将除法中的种群强制转换为双精度型,以强制除法使用浮点数而不是整数。为了实现这一点,您还需要在从人群中移除人员/向受感染的人群中添加人员时将spreadSpeed转换为int。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67602986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档