Java乘法功能失效:运行始终输出错误信息排查
问题分析与解决
先看这段Java代码:
class DecisionControl1{ public static void main (String[] args){ int num1 = Integer.parseInt(args[0]); String op = args[1]; int num2 = Integer.parseInt(args[2]); if(op.equals("*")){ System.out.println(num1 * num2); } else{ System.out.println("error"); } } }
这段代码编译没问题,但运行时始终输出error,无法执行乘法逻辑,核心问题出在命令行参数的传递方式:
当你在终端输入类似java DecisionControl1 2 * 3的命令时,操作系统(Linux/macOS的Shell、Windows的CMD/PowerShell)会把*识别为文件通配符,自动将其替换成当前目录下的所有文件名,而不是把*作为普通字符串传递给Java程序。这就导致args[1]拿到的不是预期的*,自然匹配不上op.equals("*"),只能走else分支输出错误信息。
解决办法
运行程序时给*加上引号,强制操作系统将其视为普通字符串:
- Linux/macOS Shell环境:用单引号包裹参数,执行命令
java DecisionControl1 2 '*' 3 - Windows CMD环境:用双引号包裹参数,执行命令
java DecisionControl1 2 "*" 3 - Windows PowerShell环境:用单引号包裹或转义
*,执行java DecisionControl1 2 '*' 3或java DecisionControl1 2*3
这样程序就能正确获取到*作为第二个参数,正常执行乘法运算。
内容的提问来源于stack exchange,提问作者Win Min Thant
相关产品推荐
相关产品推荐

