Java switch-case模拟计算器时减号“-”功能异常求助
Java Switch-Case计算器减法失效问题:原因与修复
问题原因
你的减法运算返回错误结果(默认值0.0),核心问题是**case "-"分支缺少break语句**。
在Java的switch-case结构中,当某个case匹配成功后,如果没有break终止当前分支,程序会"贯穿"到后续所有case中执行代码,直到遇到break或switch结构结束。
以你输入6、-、2的场景为例:
- 程序先执行
res = (double)6 - (double)2,此时res的值是4.0 - 因为没有
break,程序继续执行下一个case "%"的代码:res = (double)6 % (double)2,6%2的结果是0.0,res被覆盖为0.0 - 最终输出的就是被覆盖后的0.0
修复方案
在case "-"的代码块末尾添加break语句,阻止代码贯穿到后续case:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a, b; String operator; double res = 0.0; boolean invalid_operator = false; System.out.println("Enter first number"); a = scanner.nextInt(); System.out.println("Enter operator"); operator = scanner.next(); System.out.println("Enter second number"); b = scanner.nextInt(); scanner.close(); switch(operator) { case "/": res = (double)a/(double)b; break; case "*": res = (double)a*(double)b; break; case "+": res = (double)a+(double)b; break; case "-": res = (double)a-(double)b; break; // 添加这行break case "%": res = (double)a%(double)b; break; default: System.out.println("Invalid operator"); invalid_operator = true; } if(!invalid_operator){ System.out.println(a+" "+operator+" "+b+" = "+res); } } }
添加后,当匹配到case "-"时,执行完减法运算就会跳出switch结构,不会再执行取余的代码,res就能保留正确的4.0结果。
内容的提问来源于stack exchange,提问作者MaaaaathiiiiiiiiiiEU
相关产品推荐
相关产品推荐

