Hi, ich habe in alten Code-Beständen ein kleines Programm gefunden, das für mich nicht erklärbare Ausgaben erzeugt.
Der Code:
public class CommandCalc {
public static void main(String[] args) {
System.out.println(java.util.Arrays.toString(args)); //Ausgabe zur Fehleranalyse
if(args.length == 3) {
if(checkOperands(args)) {
if("+".equals(args[1])) {
System.out.println(addition(parse(args[0]), parse(args[2])));
} else if("-".equals(args[1])) {
System.out.println(subtraction(parse(args[0]), parse(args[2])));
} else if("*".equals(args[1])) {
System.out.println(multiplication(parse(args[0]), parse(args[2])));
} else if("/".equals(args[1])) {
System.out.println(division(parse(args[0]), parse(args[2])));
} else {
System.out.println("Unzulässiger Operator!");
}
}
} else {
System.out.println("CommandCalc Verwendungsbeispiel:\nCommandCalc 5 + 8");
}
}
private static boolean checkOperands(String[] args) {
return args[0].matches("\\d+") && args[2].matches("\\d+");
}
private static double parse(String arg) {
return Double.parseDouble(arg);
}
private static double addition(double arg1, double arg2) {
return arg1 + arg2;
}
private static double subtraction(double arg1, double arg2) {
return arg1 - arg2;
}
private static double multiplication(double arg1, double arg2) {
return arg1 * arg2;
}
private static double division(double arg1, double arg2) {
return arg1 / arg2;
}
}
Das Programm macht zum Teil, was es soll. Aber wenn ich eine Multiplikation durchführen möchte, sieht die Ausgabe folgendermaßen aus:
java CommandCalc 5 * 6
[5, CommandCalc.class, CommandCalc.java, 6]
CommandCalc Verwendungsbeispiel:
CommandCalc 5 + 8
Warum werden bei Verwendung des Sterns 4 Argumente eingelesen? Wo ist das Sternchen hin? Warum werden die Dateien des Verzeichnisses, aus dem das Programm gestartet wurde, als Argumente eingesetzt? Wie kann man das Problem lösen?