4 Grundrechenarten auf der Kommandozeile: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
In diesem Code-Beispiel bauen wir uns einen Rechner für die Kommandozeile. | In diesem Code-Beispiel bauen wir uns einen Rechner für die Kommandozeile. | ||
Die hier vorgestellte Klasse CommandCalc berechnet das Ergebnis einer Grundrechenart-Operation mit zwei Operanden. Dabei erwartet sie die Teile der Rechenaufgabe als Argumente beim Start des Programms. | |||
'''Beispiel:''' | |||
java CommandCalc 3,2 x 5,8 | |||
Das Beispiel startet eine Multiplikation. Üblicherweise wird bei einer Multiplikation das Sternchen als Operator eingesetzt. Da das Sternchen aber auf den Kommandozeilen der bekannten Betriebssysteme bereits eine Wildcard-Funktion inne hat, benutzen wir ersatzweise das <code>x</code>. | |||
<code=java> | <code=java> | ||
| Zeile 5: | Zeile 11: | ||
/** | /** | ||
* CommandCalc berechnet das Ergebnis einer | * CommandCalc berechnet das Ergebnis einer Grundrechenart-Operation mit zwei Operanden. | ||
* | * | ||
* @author Gernot Segieth | * @author Gernot Segieth | ||
Version vom 27. Februar 2018, 15:23 Uhr
In diesem Code-Beispiel bauen wir uns einen Rechner für die Kommandozeile.
Die hier vorgestellte Klasse CommandCalc berechnet das Ergebnis einer Grundrechenart-Operation mit zwei Operanden. Dabei erwartet sie die Teile der Rechenaufgabe als Argumente beim Start des Programms.
Beispiel:
java CommandCalc 3,2 x 5,8
Das Beispiel startet eine Multiplikation. Üblicherweise wird bei einer Multiplikation das Sternchen als Operator eingesetzt. Da das Sternchen aber auf den Kommandozeilen der bekannten Betriebssysteme bereits eine Wildcard-Funktion inne hat, benutzen wir ersatzweise das x.
<code=java> import static java.util.Locale.GERMANY;
/**
* CommandCalc berechnet das Ergebnis einer Grundrechenart-Operation mit zwei Operanden. * * @author Gernot Segieth */
public class CommandCalc {
public static void main(String[] args) {
if(args.length == 3 && checkArgs(args)) {
System.out.print(args[0] +" "+ args[1] +" "+ args[2] +" = ");
switch(args[1]) {
case "+":
System.out.format(GERMANY, "%f%n", addition(parse(args[0]), parse(args[2])));
break;
case "-":
System.out.format(GERMANY, "%f%n", subtraction(parse(args[0]), parse(args[2])));
break;
case "x":
System.out.format(GERMANY, "%f%n", multiplication(parse(args[0]), parse(args[2])));
break;
case "/":
System.out.format(GERMANY, "%f%n", division(parse(args[0]), parse(args[2])));
break;
default:
System.out.println("Unzulässiger Operator!");
}
System.out.println();
} else {
System.out.println("CommandCalc, 2015 - Gernot Segieth");
System.out.println("Zulässige Operatoren: + - x /");
System.out.println("Verwendungsbeispiel:\njava CommandCalc 5 + 8");
}
}
private static boolean checkArgs(String[] args) {
/*
* Regex Erklärung:
* - die zahl hat optional an erster Stelle ein negatives Vorzeichen
* - darauf folgt mindestens eine Ziffer
* - optional: (die Zahl darf einen Punkt oder Komma enthalten
* - nach dem Punkt oder Komma endet die Zahl mit mindestens einer weiteren Ziffer)
*/
String pattern = "^[-]?\\d+([.,]\\d+)?$";
return args[0].matches(pattern) && args[2].matches(pattern);
}
private static double parse(String arg) {
return Double.parseDouble(arg.replace(',', '.'));
}
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;
}
} </code=java>
