You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java switch-case模拟计算器时减号“-”功能异常求助

Java Switch-Case计算器减法失效问题:原因与修复

问题原因

你的减法运算返回错误结果(默认值0.0),核心问题是**case "-"分支缺少break语句**。

在Java的switch-case结构中,当某个case匹配成功后,如果没有break终止当前分支,程序会"贯穿"到后续所有case中执行代码,直到遇到break或switch结构结束。

以你输入6、-、2的场景为例:

  1. 程序先执行res = (double)6 - (double)2,此时res的值是4.0
  2. 因为没有break,程序继续执行下一个case "%"的代码:res = (double)6 % (double)2,6%2的结果是0.0,res被覆盖为0.0
  3. 最终输出的就是被覆盖后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:26:01