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

Символ, введенный в командной строке, интерпретируется оболочкой как символ подстановки, что означает все файлы в текущем каталоге. Командная строка, передаваемая на Java, это что-то вроде

3 Calc2.class Calc2.java 4 

плюс любые другие файлы, которые могут быть представлены.

Побег в оболочке (или одинарная кавычка, чтобы избежать интерпретации оболочки).

java Calc2 3\* 4 

или

java Calc2 3 '*' 4 
2

* расширяется оболочки, поэтому вы получите список файлов в качестве аргументов. Вам необходимо сбежать:

java Calc2 4 "*" 3 
Смежные вопросы