4 Grundrechenarten auf der Kommandozeile: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springenK |
K |
||
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
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. | ||
− | <code=java> | + | Die hier vorgestellte [[Klasse]] CommandCalc berechnet das Ergebnis einer Grundrechenart-Operation mit zwei Operanden. Dabei erwartet sie die Teile der Rechenaufgabe als [[Argument|Argumente]] beim Start des Programms. |
− | import | + | |
+ | '''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 [[Betriebssystem|Betriebssysteme]] bereits eine Wildcard-Funktion inne hat, benutzen wir ersatzweise das <code>x</code>. | ||
+ | |||
+ | <syntaxhighlight lang="java"> | ||
+ | import java.text.DecimalFormat; | ||
/** | /** | ||
* CommandCalc berechnet das Ergebnis einer Rechenoperation mit zwei Operanden. | * CommandCalc berechnet das Ergebnis einer Rechenoperation mit zwei Operanden. | ||
− | * | + | * |
* @author Gernot Segieth | * @author Gernot Segieth | ||
*/ | */ | ||
public class CommandCalc { | public class CommandCalc { | ||
+ | private static DecimalFormat formatter = new DecimalFormat("#.###"); | ||
+ | |||
public static void main(String[] args) { | public static void main(String[] args) { | ||
if(args.length == 3 && checkArgs(args)) { | if(args.length == 3 && checkArgs(args)) { | ||
System.out.print(args[0] +" "+ args[1] +" "+ args[2] +" = "); | System.out.print(args[0] +" "+ args[1] +" "+ args[2] +" = "); | ||
+ | |||
+ | double value1 = parse(args[0]); | ||
+ | double value2 = parse(args[2]); | ||
+ | double result = 0; | ||
+ | |||
switch(args[1]) { | switch(args[1]) { | ||
case "+": | case "+": | ||
− | + | result = addition(value1, value2); | |
break; | break; | ||
case "-": | case "-": | ||
− | + | result = subtraction(value1, value2); | |
break; | break; | ||
case "x": | case "x": | ||
− | + | result = multiplication(value1, value2); | |
break; | break; | ||
case "/": | case "/": | ||
− | + | result = division(value1, value2); | |
break; | break; | ||
default: | default: | ||
− | System.out.println(" | + | System.out.println("[FEHLER]\nUnzulässiger Operator!"); |
+ | return; | ||
} | } | ||
− | + | out(result); | |
} else { | } else { | ||
System.out.println("CommandCalc, 2015 - Gernot Segieth"); | System.out.println("CommandCalc, 2015 - Gernot Segieth"); | ||
Zeile 35: | Zeile 49: | ||
System.out.println("Verwendungsbeispiel:\njava CommandCalc 5 + 8"); | System.out.println("Verwendungsbeispiel:\njava CommandCalc 5 + 8"); | ||
} | } | ||
+ | } | ||
+ | |||
+ | private static void out(double value) { | ||
+ | System.out.println(formatter.format(value)); | ||
} | } | ||
Zeile 69: | Zeile 87: | ||
} | } | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
− | |||
[[Kategorie:Java Grundlagen]] | [[Kategorie:Java Grundlagen]] | ||
[[Kategorie:Java-Codeschnipsel]] | [[Kategorie:Java-Codeschnipsel]] |
Aktuelle Version vom 13. August 2019, 17:12 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
.
import java.text.DecimalFormat;
/**
* CommandCalc berechnet das Ergebnis einer Rechenoperation mit zwei Operanden.
*
* @author Gernot Segieth
*/
public class CommandCalc {
private static DecimalFormat formatter = new DecimalFormat("#.###");
public static void main(String[] args) {
if(args.length == 3 && checkArgs(args)) {
System.out.print(args[0] +" "+ args[1] +" "+ args[2] +" = ");
double value1 = parse(args[0]);
double value2 = parse(args[2]);
double result = 0;
switch(args[1]) {
case "+":
result = addition(value1, value2);
break;
case "-":
result = subtraction(value1, value2);
break;
case "x":
result = multiplication(value1, value2);
break;
case "/":
result = division(value1, value2);
break;
default:
System.out.println("[FEHLER]\nUnzulässiger Operator!");
return;
}
out(result);
} 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 void out(double value) {
System.out.println(formatter.format(value));
}
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;
}
}