You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何获取对象初始化时的life初始值以实现isWeak方法?

解决方案

要解决这个问题,核心是保存生命值的初始值——因为当前life会随战斗过程被修改,不能用它自身作为判断基准。

步骤1:新增初始生命值成员变量

在Char类中添加一个私有变量,专门存储对象初始化时的生命值:

public class Char {
    private String name;
    private int skill;
    private int defense;
    private int life;
    // 新增:保存初始生命值的变量
    private int initialLife;

    private Weapon weapon = Weapon.FISTS;
    private Potion potion = null;

    // 在构造方法中同步初始生命值
    public Char(String name, int skill, int defense, int life) {
        this.name = name;
        this.skill = skill;
        this.defense = defense;
        this.life = life;
        this.initialLife = life; // 将初始值存入专门变量
    }

    // 其他原有方法...
}

步骤2:修正isWeak方法

把判断基准从当前life替换为保存的initialLife:

public boolean isWeak() {
    // 用初始生命值的25%作为判断阈值
    return life < initialLife * 0.25;
}

如果想避免浮点运算的精度问题,也可以用整数乘法实现等价逻辑:

public boolean isWeak() {
    // 整数运算替代浮点计算,避免精度误差
    return life * 4 < initialLife;
}

原有写法无效的原因

你原来的代码return life < this.life * 0.25中,this.life就是当前的生命值,一个正数永远不可能小于自身的25%,所以判断结果永远为false。必须用初始化时的固定值作为基准,才能正确识别当前生命值是否低于初始值的25%。

内容的提问来源于stack exchange,提问作者Ricardo Muraoka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:15:43