星号*在命令行当乘号做乘法运算出现异常的解释
异常:当我们使用 * 当作乘号在命令行做乘法运算时,会出现我们意想不到的结果,即会显示当前目录下的所有文件
原因:这是由于Windows系统对 * 的其他解释(根据资料的简要解释,可能不大正确)
原因参考链接
reference1: Java String args asterisk.
reference2:escape an asterisk as a Java command line argument in shell
解决方法
源代码中重新定义乘法,例如用 . 表示乘法,即在命令行中输入 a . b 即可表示乘法运算
package chapter7;
//示例来自Java教材
public class Calculator {
public static void main(String[] args) {
if (args.length != 3) {
System.out.println("Usage: java calculator operand1 operator operand2");
System.exit(-1);
}
int result = 0;
switch (args[1].charAt(0)) {
case '+':
result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]);
break;
case '-':
result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]);
break;
case '.':
result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);
break;
case '/':
result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]);
break;
}
System.out.println(args[0] + " " + args[1] + " " + args[2] + "=" + result);
}
}