Try-catch-Anweisungen in berechnung() hinzugefügt

master
andre 2024-06-23 19:20:22 +02:00
parent e9d033d5ef
commit 6c80ae4cda
1 changed files with 55 additions and 27 deletions

View File

@ -7,6 +7,7 @@ public class Rechner {
public static void main(String[] args) { public static void main(String[] args) {
//Endlosschleife
while(true) { while(true) {
String input =""; String input ="";
@ -20,19 +21,16 @@ public class Rechner {
try { try {
input = sc.nextLine(); input = sc.nextLine();
if (input.length()!=1)
throw new IllegalArgumentException("Nur ein Zeichen eingeben. Versuche es erneut."); //Eingabefehler abfangen
if (input.length() != 1)
throw new IllegalArgumentException("Bitte nur ein Zeichen eingeben. Versuche es erneut.");
char c = input.charAt(0); char c = input.charAt(0);
try {
int ergebnis = berechnung(c); int ergebnis = berechnung(c);
// if (ergebnis != -1)
System.out.println("Ergebnis: " + ergebnis); System.out.println("Ergebnis: " + ergebnis);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
} catch(ArithmeticException e) {
System.out.println(e.getMessage());
}
} catch(IllegalArgumentException e) { } catch(IllegalArgumentException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
@ -60,8 +58,15 @@ public class Rechner {
int faktor1 = sc.nextInt(); int faktor1 = sc.nextInt();
System.out.print("Zweiten Faktor eingeben: "); System.out.print("Zweiten Faktor eingeben: ");
int faktor2 = sc.nextInt(); int faktor2 = sc.nextInt();
try {
ergebnis = multiplizieren(faktor1, faktor2); ergebnis = multiplizieren(faktor1, faktor2);
return ergebnis; return ergebnis;
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
ergebnis = -1;
return ergebnis;
}
case 'd': case 'd':
System.out.println("\n* Division *"); System.out.println("\n* Division *");
@ -69,8 +74,18 @@ public class Rechner {
int dividend = sc.nextInt(); int dividend = sc.nextInt();
System.out.print("Divisor eingeben: "); System.out.print("Divisor eingeben: ");
int divisor = sc.nextInt(); int divisor = sc.nextInt();
try {
ergebnis = dividieren(dividend, divisor); ergebnis = dividieren(dividend, divisor);
return ergebnis; return ergebnis;
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
ergebnis = -1;
return ergebnis;
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
ergebnis = -1;
return ergebnis;
}
case 'e': case 'e':
System.out.println("\n* Exponent *"); System.out.println("\n* Exponent *");
@ -78,17 +93,30 @@ public class Rechner {
int grundwert = sc.nextInt(); int grundwert = sc.nextInt();
System.out.print("Exponent eingeben: "); System.out.print("Exponent eingeben: ");
int exponent = sc.nextInt(); int exponent = sc.nextInt();
try {
ergebnis = exponent(grundwert, exponent); ergebnis = exponent(grundwert, exponent);
return ergebnis; return ergebnis;
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
ergebnis = -1;
return ergebnis;
}
case 'f': case 'f':
System.out.println("\n* Fakultät *"); System.out.println("\n* Fakultät *");
System.out.print("Zahl eingeben: "); System.out.print("Zahl eingeben: ");
int n = sc.nextInt(); int n = sc.nextInt();
try {
ergebnis = fakultaet(n); ergebnis = fakultaet(n);
return ergebnis; return ergebnis;
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
ergebnis = -1;
return ergebnis;
}
default: default:
System.out.println("Kein gültiges Zeichen eingegeben! Bitte Versuche es erneut.");
return -1; return -1;
} }
} }
@ -164,11 +192,11 @@ public class Rechner {
* @throws IllegalArgumentException Wenn die Zahl negativ ist * @throws IllegalArgumentException Wenn die Zahl negativ ist
*/ */
public static int fakultaet(int n) throws IllegalArgumentException { public static int fakultaet(int n) throws IllegalArgumentException {
if (n < 0) if (n < 0) {
throw new IllegalArgumentException(); throw new IllegalArgumentException("Zahl darf nicht negativ sein.");
if (n == 0) } else if (n == 0)
return 0; return 0;
if (n == 1 || n == 2) else if (n == 1 || n == 2)
return n; return n;
else { else {
return fakultaet(n-1) * n; return fakultaet(n-1) * n;