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

Java计算器输入运算符后if语句无输出问题求助

解决Java计算器运算判断无输出的问题

嘿,我一眼就看出你遇到的问题啦!问题出在你判断运算类型的字符串比较逻辑上,咱们来一步步拆解:

问题根源

在Java中,==运算符用来比较两个对象的内存地址,而非字符串的实际内容。你通过Scanner获取的math是一个新的字符串对象,和代码里写的"+"、"-"这些字面量字符串,哪怕内容完全一致,也可能不是同一个内存对象,导致所有if判断都无法匹配,自然就没有输出结果啦。

解决方案

把所有用==比较字符串的地方,换成equals()方法——这个方法才是专门用来判断字符串内容是否相等的。

另外还有个小优化:用else if替代多个独立的if,这样只要匹配到一个运算符号,就不会再检查后续条件,代码效率会更高。

修改后的完整代码

import java.util.Scanner;

public class Basic {
    public static void main(String[] args) {
        Scanner CalcType = new Scanner(System.in);
        double fnum, snum;
        String math;

        System.out.println("--------------------------------------------------");
        System.out.println("Welcome to the basic calculator made by codermadi!");
        System.out.println("--------------------------------------------------");
        System.out.println("Enter first number!");
        System.out.println("--------------------------------------------------");
        fnum = CalcType.nextDouble();

        System.out.println("--------------------------------------------------");
        System.out.println("Enter second number!");
        System.out.println("--------------------------------------------------");
        snum = CalcType.nextDouble();

        System.out.println("--------------------------------------------------");
        System.out.println("+ | - | / | x | %");
        System.out.println("--------------------------------------------------");
        math = CalcType.next();

        if (math.equals("+")) {
            System.out.println(fnum + snum);
        } else if (math.equals("-")) {
            System.out.println(fnum - snum);
        } else if (math.equals("/")) {
            System.out.println(fnum / snum);
        } else if (math.equals("*") || math.equals("x")) {
            System.out.println(fnum * snum);
        } else if (math.equals("%")) {
            System.out.println(fnum % snum);
        } else {
            // 新增非法输入提示,提升用户体验
            System.out.println("Oops! That's not a valid operation.");
        }

        System.out.println("-------------------------------------------");
        System.out.println("Thank you for using codermadi's calculator!");
        System.out.println("-------------------------------------------");
    }
}

额外小改进

我还帮你把*和x的判断合并成了一个else if,让代码更简洁。另外新增了else分支处理用户输入非法符号的情况,这样计算器的交互体验会更友好哦~

内容的提问来源于stack exchange,提问作者codermadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:06