我正在尝试创建一个基本的计算器。这是我的代码:
public class Calc2 {
public static void main(String[] args) {
String[] calcArray;
calcArray = new String[3];
calcArray[0] = args[0];
calcArray[1] = args[1];
calcArray[2] = args[2];
double result = 0;
if (args.length == 3) {
double firstNumber = Double.parseDouble(args[0]);
int operator = args[1].charAt(0);
double secondNumber = Double.parseDouble(args[2]);
System.out.print(args[0] + " " + args[1] + " " + args[2] + " = ");
switch (operator)
{
case ('+'):
result = firstNumber + secondNumber;
break;
case ('-'):
result = firstNumber - secondNumber;
break;
case ('*'):
result = firstNumber * secondNumber;
break;
case ('/'):
result = firstNumber / secondNumber;
break;
default:
System.out.println("Invalid Operator selected");
}
System.out.printf(" " + result);
}
else
{
System.out.println("Incorrect arguments quantity");
}
}
}
似乎“ - ”,“+”,“/”运算符正常工作,但是当我尝试在此代码中执行乘法时,例如:
java Calc2 4 * 3
程序显示以下结果:
Incorrect argument quantity
请解释,为什么会发生以及如何解决它。 感谢。
答案 0 :(得分:7)
命令行上键入的*
字符被shell解释为通配字符,表示当前目录中的所有文件。输入Java的命令行类似于
3 Calc2.class Calc2.java 4
加上可能存在的任何其他文件。
在shell中将其转义(或单引号以避免shell解释)。
java Calc2 3\* 4
或
java Calc2 3 '*' 4
答案 1 :(得分:2)
*
由shell扩展,因此您将获得文件列表作为参数。你需要逃脱:
java Calc2 4 "*" 3