2016-02-11 51 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