hallo,
unten folgt ein ausschnitt aus einem java taschenrechner, den ich programmieren soll.
funktioniert auch alles soweit ganz gut, allerdings wenn eine exception auftritt, dann passiert nicht das was ich erwartet hatte.
erstens mal wollte ich mal fragen, ob ich das "continue" überhaupt brauche, oder wo das programm normalerweise weiterläuft nachdem eine exception abgefangen wurde!?
und zweitens habe ich folgendes problem: nach einer exception fängt zwar ein neuer schleifendurchlauf der while-schleife an, allerdings wird die variable operatorS nicht neu eingelesen! es wird zwar "Geben Sie einen Rechenoperator ein" ausgegeben, aber das einlesen wird einfach übersprungen.
sc ist ein objekt der klasse java.util.Scanner.
würde mich freuen wenn mir jemand helfen kann!
unten folgt ein ausschnitt aus einem java taschenrechner, den ich programmieren soll.
funktioniert auch alles soweit ganz gut, allerdings wenn eine exception auftritt, dann passiert nicht das was ich erwartet hatte.
erstens mal wollte ich mal fragen, ob ich das "continue" überhaupt brauche, oder wo das programm normalerweise weiterläuft nachdem eine exception abgefangen wurde!?
und zweitens habe ich folgendes problem: nach einer exception fängt zwar ein neuer schleifendurchlauf der while-schleife an, allerdings wird die variable operatorS nicht neu eingelesen! es wird zwar "Geben Sie einen Rechenoperator ein" ausgegeben, aber das einlesen wird einfach übersprungen.
sc ist ein objekt der klasse java.util.Scanner.
würde mich freuen wenn mir jemand helfen kann!
Code:
while(operator != 'o'){
System.out.println("\nAktuelles Ergebnis: "+ergebnis);
System.out.println("Geben Sie einen Rechenoperator ein");
//versuche, den rechenoperator einzulesen. sollte es einen fehler geben, gib eine fehlermeldung aus und fange von vorn an.
try{
operatorS = sc.next();
}
catch (NoSuchElementException el) {System.out.println("Fehler"); continue;}
catch (IllegalStateException ill) {System.out.println("Fehler"); continue;}
//wandle den eingelesenen operator in einen char um
operator = operatorS.charAt(0);
System.out.println("Geben Sie eine Zahl ein");
//versuche, einen double-wert einzulesen. sollte es einen fehler geben, gib eine fehlermeldung aus und fange von vorn an.
try{
zahl = sc.nextDouble();
}
catch (InputMismatchException im) {System.out.println("Fehler"); continue;}
catch (NoSuchElementException el0) {System.out.println("Fehler"); continue;}
catch (IllegalStateException ill0) {System.out.println("Fehler"); continue;}
//Falls der rechenoperator bekannt ist, führe die entsprechende rechenoperation aus, ansonsten lasse das ergebnis unverändert.
switch(operator){
case '+':
ergebnis = ergebnis + zahl;
break;
case 'x': case '*':
ergebnis = ergebnis * zahl;
break;
case '/': case ':':
ergebnis = ergebnis / zahl;
break;
case '-':
ergebnis = ergebnis - zahl;
break;
case 'c':
ergebnis = 0;
}
} //ende der while-schleife