在简单的Java计算器中,乘法无法正常工作。

3

我正试图创建一个基本的计算器。以下是我的代码:

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

请解释原因以及如何修复此问题。谢谢。

有些符号是命令行可以识别的,比如反斜杠、管道符等等。它会消耗这些符号,并将它们解释为命令 - 例如,如果您使用管道符,它将运行左侧的所有内容,并将输出馈送到右侧的所有内容中。 - Andrew Williamson
2个回答

7

在命令行上输入的*字符被shell解释为通配符,表示当前目录中的所有文件。传递给Java的命令行大致如下:

3 Calc2.class Calc2.java 4

还有可能存在的其他文件。

在shell中转义它(或使用单引号避免shell解释)。

java Calc2 3\* 4

或者

java Calc2 3 '*' 4

2

* 是由shell扩展的,因此您将得到文件列表作为参数。您需要进行转义:

java Calc2 4 "*" 3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接