Java中如何结合布尔值使用If-Else语句?实战场景实现
Java中布尔值结合If-Else的实现方案
先修正代码基础问题
原代码里generateAbilities方法用到了damage变量但未定义,需要在私有属性区域添加:
private int damage;
实现hitAttempt方法(返回布尔值)
基于角色speed属性设计命中逻辑:生成0-100的随机数,若数值≤角色速度则判定命中(返回true),反之未命中(返回false):
public boolean hitAttempt() { int chance = (int)(Math.random() * 101); return chance <= this.speed; }
实现hitDamage方法(计算并显示伤害)
基于角色strength属性计算伤害,用力量值乘以0.5~1的随机系数生成最终伤害,再输出结果:
public void hitDamage(){ int damageDealt = (int)(this.strength * (Math.random() * 0.5 + 0.5)); System.out.println(this.name + " 造成了 " + damageDealt + " 点伤害!"); }
修改fight方法,结合If-Else使用布尔值
在fight方法中调用hitAttempt获取命中结果,通过If-Else判断布尔值,决定是否执行伤害逻辑:
public void fight() { System.out.println(this.name + " is fighting!"); boolean isHit = hitAttempt(); if (isHit) { hitDamage(); } else { System.out.println(this.name + " 攻击未命中!"); } }
完整修正后的代码
public class Goodman { // PRIVATE PROPERTIES private int strength; private int speed; private int health; private int damage; // 新增伤害属性 // PUBLIC PROPERTIES public String name; // GETTERS public int getStrength() { return strength; } public int getSpeed(){ return speed; } public int getHealth(){ return health; } // CONSTRUCTORS public Goodman (String name) { this.name = name; generateAbilities(); } public void showPowers() { System.out.println("<::::::::::::::::::::::>"); System.out.println("Strength: " + strength); System.out.println("Speed: " + speed); System.out.println("Health: " + health); System.out.println("<::::::::::::::::::::::>"); } // PRIVATE METHODS private void generateAbilities(){ this.strength = (int)(Math.random()*100+1); this.speed = (int)(Math.random()*100+1); this.health = (int)(Math.random()*100+1); this.damage = (int)(Math.random()*100+1); } // PUBLIC METHODS public void fight() { System.out.println(this.name + " is fighting!"); boolean isHit = hitAttempt(); if (isHit) { hitDamage(); } else { System.out.println(this.name + " 攻击未命中!"); } } public boolean hitAttempt() { int chance = (int)(Math.random() * 101); return chance <= this.speed; } public void hitDamage(){ int damageDealt = (int)(this.strength * (Math.random() * 0.5 + 0.5)); System.out.println(this.name + " 造成了 " + damageDealt + " 点伤害!"); } }
逻辑说明
hitAttempt返回的布尔值直接作为If语句的判断条件,是Java中布尔值与If-Else结合的基础用法。- 完整流程:
fight触发攻击→hitAttempt判断命中结果→根据布尔值决定是否执行伤害计算与输出。
内容的提问来源于stack exchange,提问作者Itwasntme
相关产品推荐
相关产品推荐

