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
相关产品推荐
相关产品推荐

