4 Grundrechenarten auf der Kommandozeile: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
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 Rechenoperation mit zwei Operanden.
+
  * 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>