三元运算符编译错误求助:根据算术运算符计算结果报错
三元运算符语法错误原因及修复方案
你的错误出在链式三元运算符的最后一段缺少了备选分支。
Java的三元运算符必须严格遵循 条件 ? 表达式1 : 表达式2 的完整结构——每一个?都必须对应一个:和备选表达式。你当前代码的最后一段(mathOperator == '*') ? n1*n2只定义了满足条件时的结果,却没有指定当运算符不匹配*时的处理逻辑,这违反了语法规则,所以编译器在分号位置报错。
修复方案
给最后一个三元分支补充备选逻辑即可,比如设置默认值,或者抛出异常提示无效运算符:
方案1:设置默认值(比如0.0)
double n1 = 45; double n2 = 9; double result = (mathOperator == '/') ? n1/n2 : (mathOperator == '+') ? n1+n2 : (mathOperator == '-') ? n1-n2 : (mathOperator == '*') ? n1*n2 : 0.0; // 补充默认分支 System.out.println(result);
方案2:抛出异常处理无效运算符
double n1 = 45; double n2 = 9; double result = (mathOperator == '/') ? n1/n2 : (mathOperator == '+') ? n1+n2 : (mathOperator == '-') ? n1-n2 : (mathOperator == '*') ? n1*n2 : throw new IllegalArgumentException("无效的算术运算符"); System.out.println(result);
这样每个三元分支都保持了完整的条件?结果:备选结构,编译器就能正常编译了。
内容的提问来源于stack exchange,提问作者ImMe
相关产品推荐
相关产品推荐

