Java中if条件判定为true时else语句仍执行的问题求助
问题原因分析
1. 核心错误:if条件后多余的分号
你在if (SPEED.getPower() + HEALTH.getPower() + POWER.getPower() == 100);这行末尾多写了一个分号;。Java语法中,分号代表单条语句的结束,这会直接导致:
- if条件的执行体被识别为空语句,条件为true时仅执行这个没有任何操作的空语句
- 后续
{}包裹的打印代码块和if条件完全脱离,无论if判断结果是什么,这个代码块都会执行 - 你写的
Else :不符合Java语法规范,对应的{}代码块也会被识别为独立的全局代码块,不受if条件控制直接执行
2. 语法错误:else关键字书写不规范
Java是大小写敏感的编程语言,else关键字必须全小写,你写的Else会被编译器识别为未定义标识符,同时else后不需要加冒号:,这也属于语法错误。
3. 潜在隐患:浮点数等值判断风险
你的三个属性类型都是double双精度浮点数,直接用==做等值判断存在精度误差风险,后续如果涉及浮点数运算,建议改为判断差值的绝对值小于一个极小阈值(比如1e-6)来规避精度问题。
修复后的代码示例
// 去掉if末尾的分号,else改为全小写且删除多余冒号 if (SPEED.getPower() + HEALTH.getPower() + POWER.getPower() == 100) { System.out.println("********"); System.out.println("Your battleBots name is "+ name11.getName()); System.out.println("Your battleBots Health stat is "+HEALTH.getHealth()); System.out.println("Your battleBots Power stat is "+POWER.getPower()); System.out.println("Your battleBots Speed stat is "+SPEED.getSpeed()); System.out.println("********"); } else { System.out.println("your stat total did not equal a total of 100 (over or under), this means your stats will be set to 40/30/30"); HEALTH.setHealth(40); SPEED.setSpeed(30); POWER.setPower(30); }
内容的提问来源于stack exchange,提问作者DJKIDF06 kyl3
相关产品推荐
相关产品推荐

