La multiplication ne fonctionne pas dans une calculatrice java simple


J'essaie de créer une calculatrice de base. Voici mon code:

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");
    }       
}
}

Semble que "-","+","/" les opérateurs fonctionnent correctement, mais quand j'essaie d'exécuter la multiplication dans ce code, par exemple:

java Calc2 4 * 3

Le programme affiche le résultat suivant:

Incorrect argument quantity

Veuillez expliquer pourquoi cela se produit et comment le réparer. Grâce.

Author: Anton Shvets, 2016-02-11

2 answers

Le caractère * tapé sur la ligne de commande est interprété par le shell comme un caractère globbing, c'est-à-dire tous les fichiers du répertoire courant. La ligne de commande en cours d'alimentation en Java est quelque chose comme

3 Calc2.class Calc2.java 4

Plus tous les autres fichiers qui peuvent être présents.

Échappez-le dans le shell (ou citez-le pour éviter l'interprétation du shell).

java Calc2 3\* 4

Ou

java Calc2 3 '*' 4
 7
Author: rgettman, 2016-02-11 20:39:19

* est développé par le shell, donc vous obtiendrez la liste des fichiers en tant qu'arguments. Vous devez échapper:

java Calc2 4 "*" 3
 2
Author: Zbynek Vyskovsky - kvr000, 2016-02-11 20:40:06