2016-02-11 55 views
3

我想创建一个基本的计算器。这里是我的代码:乘法不工作在简单的Java计算器

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 
2

*是由外壳扩展,所以你会得到的文件列表作为参数。你需要逃避:

java Calc2 4 "*" 3