Ich habe eine Klasse Kalkulator entwickelt, mit der arithmetischer Ausdruck schrittweise eingegeben und berechnen werden kann. So weit ist alles ok. In der Aufgabe jedoch steht, dass nach der Berechnung sollte abgefragt werden, ob eine weitere Berechnung (J/N) erfolgen soll.
Wie kann ich das realisieren?
Wie kann ich das realisieren?
Code:
import java.util.Scanner;
public class Kalkulator {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
double zahl1 = kalkuliere1();
double zahl2 = kalkuliere2();
char operation = operationWahl();
double ergebniss = rechne(zahl1,zahl2,operation);
System.out.println("Ergebniss: "+ ergebniss);
}
public static double kalkuliere1(){
System.out.println("Erste Zahl bitte:");
double zahl1;
if(scanner.hasNextDouble()){ // Gibt true zurück, wenn Eingabe dieses Scanners mit der nextDouble()-Methode als doppelter Wert interpretiert werden kann.
zahl1 = scanner.nextDouble();
} else {
System.out.println("Eingabefehler, Erste Zahl bitte noch mal");
scanner.next();//Rekursion
zahl1 = kalkuliere1();
}
return zahl1;
}
public static double kalkuliere2(){
System.out.println("Zweite Zahl bitte:");
double zahl2;
if(scanner.hasNextDouble()){
zahl2 = scanner.nextDouble();
} else {
System.out.println("Eingabefehler, Zweite Zahl bitte noch mal");
scanner.next();//Rekursion
zahl2 = kalkuliere2();
}
return zahl2;
}
public static char operationWahl(){
System.out.println("Operator bitte:");
char operation;
if(scanner.hasNext()){
operation = scanner.next().charAt(0);
} else {
System.out.println("Operator bitte noch mal");
scanner.next();//Rekursion
operation = operationWahl();
}
return operation;
}
public static double rechne(double zahl1, double zahl2, char operation){
double ergebniss;
switch (operation){
case '+': ergebniss = zahl1 + zahl2; break;
case '-': ergebniss = zahl1 - zahl2; break;
case '*': ergebniss = zahl1 * zahl2; break;
case '/': ergebniss = zahl1 / zahl2; break;
case '%': ergebniss = zahl1 % zahl2; break;
default: System.out.println("Operator ist nicht eindeutig");
ergebniss = rechne(zahl1, zahl2, operationWahl());
}
return ergebniss;
}
}