乘法在简单的java计算器中不起作用

时间:2016-02-11 20:35:23

标签: java calculator multiplication

我正在尝试创建一个基本的计算器。这是我的代码:

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

请解释,为什么会发生以及如何解决它。 感谢。

2 个答案:

答案 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