Java出现bad operand types for binary operator '>='报错该怎么解决?
Java BMI计算程序错误修复方案
核心报错原因
bad operand types for binary operator '>='报错的根因是Java不支持a <= b >= c这类链式比较写法:
Java运算按从左到右顺序执行,会先计算
bmi <=18.5得到boolean类型结果,再尝试用boolean值和24.9做>=比较,两种数据类型不匹配,因此抛出操作数类型错误。
除此之外你的代码还存在多处语法、逻辑错误,完整修复内容如下:
修复清单
- 修正比较表达式写法:正常BMI区间判断需要用逻辑与
&&拼接两个独立条件,同时修正逻辑错误:正常BMI范围是大于等于18.5且小于等于24.9,原写法逻辑是同时小于等于18.5且大于等于24.9,无任何数值能满足该条件
修复后的判断行:else if (bmi >= 18.5 && bmi <= 24.9) - 修正变量类型错误:BMI为带小数的数值,不能用
int类型存储,修改为double bmi - 修正拼写&基础语法错误:
- 所有
System.out.print语句末尾补充分号; - 拼写错误
Systen修正为System System.out,print的逗号修正为英文点.console.nextINt()修正为console.nextDouble(),适配double类型的BMI输入
- 所有
- 修正超重区间逻辑错误:原
bmi <=25.0会和前面的正常区间冲突,修改为else if (bmi >= 25.0)
修复后完整可运行代码
import java.util.Scanner; public class BMICalculator { public static void main(String[] args) { double bmi; Scanner console = new Scanner(System.in); System.out.print("Measure your height and weight."); System.out.print("Then Calculate your BMI."); System.out.print("Enter your BMI value: "); bmi = console.nextDouble(); if (bmi <= 18.4) { System.out.println("You're under weight, you need to gain more weight!"); } else if (bmi >= 18.5 && bmi <= 24.9) { System.out.println("You're normal, Congrats!"); } else if (bmi >= 25.0) { System.out.println("You're Overweight, you need to lose some weight."); } console.close(); } }
内容的提问来源于stack exchange,提问作者BravoSix
相关产品推荐
相关产品推荐

