Java开发计算器报错Cannot convert double to boolean如何解决
问题原因及修复方案
报错根因
你的代码存在两个语法错误直接触发了该报错:
- 混淆了Java的赋值运算符与相等判断运算符:Java中
=是赋值运算符,执行赋值操作后整个表达式的返回值是被赋值的变量值(也就是你这里的double类型);而if/else if后的判断括号内要求必须是boolean类型的结果,因此编译器尝试将你赋值操作返回的double值转换为boolean,才会抛出Cannot convert double to boolean错误。相等判断需要使用双等号==。 else分支不能附加判断条件:你在else后直接写了(Three = UserInput.nextDouble())属于语法错误,如果需要附加判断条件要使用else if,无附加条件的else后不能加括号判断逻辑。
另外补充一个逻辑漏洞:你在每个判断分支都调用UserInput.nextDouble(),会要求用户多次输入数值,不符合选择运算类型的使用逻辑,建议提前读取一次用户选择的值再做判断。
修正后的代码参考
// 提前读取一次用户选择的运算类型值,避免重复读取输入 double userChoose = UserInput.nextDouble(); if (userChoose == One) { System.out.println("Your answer is "+ Plus +"!"); }else if (userChoose == Two) { System.out.println("Your answer is "+ Sub +"!"); }else if (userChoose == Three) { System.out.println("Your answer is "+ Multi +"!"); }
额外建议:如果One/Two/Three是代表运算类型的常量,更推荐用int类型存储,double类型做相等判断可能存在精度误差导致判断失败。
内容的提问来源于stack exchange,提问作者Eclipse
相关产品推荐
相关产品推荐

