Es soll folgende einfache Rechenaufgabe gelöst werden : 1+1. Okay das erwartete Ergebnis wird 2 sein aber wie schreibt man dieses in Java?
Version 1
Am einfachsten erledigt man dieses mit einem
System.out.println(1+1);
Also würde unsere kleine Anwendung folgendermaßen aussehen :
class Rechnen1{ public static void main(String[] args){ System.out.println(1+1); } }
Unsere Konsolenausgabe sieht folgendermaßen aus :
Um dieses etwas brauchbarer zu machen, lassen wir dieses Mal den Benutzer die 2 zu addierenden Werte eingeben. Dazu benötigen wir eine Klasse namens Scanner, diese gibt uns die Möglichkeit Eingaben von der Konsole aus abzufangen und be- / verarbeiten.
Version 2
Unsere 2. Version enthält nun die Klasse Scanner und ließt aus der Konsole die beiden Werte welche Addiert werden sollen ein :
class Rechnen2{ public static void main(String[] args){ java.util.Scanner scanner = new java.util.Scanner(System.in); int value1 = scanner.nextInt(); int value2 = scanner.nextInt(); System.out.println(value1+value2); } }
Was machen die Zeilen ?
Wir kennen die Zeile class sowie die Methode main, was neu dazu gekommen ist, ist die Erstellung einer Instanz der Klasse Scanner aus dem Paket “java.util” mit dem InputStream aus der Klasse System.
java.util.Scanner scanner = new java.util.Scanner(System.in);
int value1 = scanner.nextInt(); int value2 = scanner.nextInt();
In den Zeilen 5 und 6 werden die Zahlen aus der Konsole gelesen, sollte jedoch der Benutzer ein Buchstabe oder ein Sonderzeichen eingeben so erhalten wir eine Fehlermeldung (InputMismatchException). Diese Fehlermeldung erhalten wir auch, wenn der Benutzer eine Gleitkommazahl eingibt. (siehe Datentypen von Java)
Wir könnten nun die Fehlermeldung abfangen oder eine angepasste Fehlermeldung ausgeben, aber dieses machen wir später.
Version 3
Um dem Benutzer mehr freiheit in der Wahl des Mathematischen Operators zu geben, erstellen wir eine Menüstruktur wo dieser einen Operator auswählen kann. Zusätzlich verarbeiten wir nun auch Gleitkommazahlen.
class Rechnen3{ public static void main(String[] args){ int operator = 0; while(operator != 5){ System.out.println("Rechnen mit Java"); System.out.println("[1] -"); System.out.println("[2] +"); System.out.println("[3] *"); System.out.println("[4] /"); System.out.println("[5] Ende"); System.out.print("Waehlen Sie einen Operator: "); java.util.Scanner scanner = new java.util.Scanner(System.in); operator = scanner.nextInt(); if (operator != 5){ System.out.print("1. Zahl : "); double value1 = scanner.nextDouble(); System.out.print("2. Zahl : "); double value2 = scanner.nextDouble(); String ergebnis = ""; switch (operator){ case 1: ergebnis = String.valueOf(value1-value2); break; case 2: ergebnis = String.valueOf(value1+value2); break; case 3: ergebnis = String.valueOf(value1*value2); break; case 4: ergebnis = String.valueOf(value1/value2); break; default : break; } System.out.println("Ergebnis : "+ergebnis); } } } }
In der Ihnen nun vorliegenden Version 3 unseres Rechenprogramms haben wir verbaut:
Eine Schleife sowie die Switch Case Verzweigung.
Anlegen einer Variable operator für unsere Schleife
int operator = 0;
Die Schleife, es wird der Inhalt so lange ausgeführt bis der fall eintritt, dass der Operator gleich 5 ist.
while(operator != 5){
Die Switch Case Verzweigung, es wird geprüft welchen Wert der Parameter Operator hat und es wird dann der zutreffende Fall ausgeführt. Ein beliebter Fehler in eine Switch Case ist das ein break vergessen wird.
switch (operator){ case 1 : System.out.println("1"); case 2 : System.out.println("2"); }
In diesem Beispiel würde, wenn der Operator 1 wäre auf der Konsole “12” ausgegeben werden. Das kommt daher das ein break nicht eingefügt wurde. Es müsste also im Normalfall heißen.
switch (operator){ case 1 : System.out.println("1"); break; case 2 : System.out.println("2"); break; default : break; }
Der default Fall sollte auch hinzugefügt werden damit die Verzweigung immer mit einem “brauchbaren” Ergebnis endet oder man auf einen Wert außerhalb eines bestimmten Bereiches Reagieren kann.
Die Variable “ergebnis” legen wir als ersten mit leerem Inhalt an.
String ergebnis = "";
In dem Fall das der Operator 1 ist, werden die Werte aus den Variablen value1 und value2 subtraiert. Da dieses Zahlen sind, muss eine Konvertierung des Ergebnisses auf ein String Wert erfolgen. Dieses erfolgt mit dem Aufruf von String.valueOf();.
case 1: ergebnis = String.valueOf(value1-value2);
Mit der Zeile
System.out.println("Ergebnis : "+ergebnis);
wird das Ergebnis auf die Konsole ausgegeben und das Menü wieder erstellt. Wählen Sie jetzt den Menüpunkt 5, so wird die Anwendung beendet.