diff --git a/PR1_Pflichtuebung6/src/ueb6/Rechner.java b/PR1_Pflichtuebung6/src/ueb6/Rechner.java index ba30bc6..5c08aa4 100644 --- a/PR1_Pflichtuebung6/src/ueb6/Rechner.java +++ b/PR1_Pflichtuebung6/src/ueb6/Rechner.java @@ -2,13 +2,14 @@ package ueb6; import java.util.Scanner; public class Rechner { - + static Scanner sc = new Scanner(System.in); - + public static void main(String[] args) { - + + //Endlosschleife while(true) { - + String input =""; System.out.println("Welche Rechenart soll ausgeführt werden?"); @@ -20,19 +21,16 @@ public class Rechner { try { 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); - - try { - int ergebnis = berechnung(c); - System.out.println("Ergebnis: " + ergebnis); - } catch (IllegalArgumentException e) { - System.out.println(e.getMessage()); - } catch(ArithmeticException e) { - System.out.println(e.getMessage()); - } + + int ergebnis = berechnung(c); + // if (ergebnis != -1) + System.out.println("Ergebnis: " + ergebnis); } catch(IllegalArgumentException e) { System.out.println(e.getMessage()); @@ -60,8 +58,15 @@ public class Rechner { int faktor1 = sc.nextInt(); System.out.print("Zweiten Faktor eingeben: "); int faktor2 = sc.nextInt(); - ergebnis = multiplizieren(faktor1, faktor2); - return ergebnis; + try { + ergebnis = multiplizieren(faktor1, faktor2); + return ergebnis; + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + ergebnis = -1; + return ergebnis; + } + case 'd': System.out.println("\n* Division *"); @@ -69,8 +74,18 @@ public class Rechner { int dividend = sc.nextInt(); System.out.print("Divisor eingeben: "); int divisor = sc.nextInt(); - ergebnis = dividieren(dividend, divisor); - return ergebnis; + try { + ergebnis = dividieren(dividend, divisor); + 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': System.out.println("\n* Exponent *"); @@ -78,17 +93,30 @@ public class Rechner { int grundwert = sc.nextInt(); System.out.print("Exponent eingeben: "); int exponent = sc.nextInt(); - ergebnis = exponent(grundwert, exponent); - return ergebnis; + try { + ergebnis = exponent(grundwert, exponent); + return ergebnis; + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + ergebnis = -1; + return ergebnis; + } case 'f': System.out.println("\n* Fakultät *"); System.out.print("Zahl eingeben: "); int n = sc.nextInt(); - ergebnis = fakultaet(n); - return ergebnis; + try { + ergebnis = fakultaet(n); + return ergebnis; + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + ergebnis = -1; + return ergebnis; + } default: + System.out.println("Kein gültiges Zeichen eingegeben! Bitte Versuche es erneut."); return -1; } } @@ -164,11 +192,11 @@ public class Rechner { * @throws IllegalArgumentException Wenn die Zahl negativ ist */ public static int fakultaet(int n) throws IllegalArgumentException { - if (n < 0) - throw new IllegalArgumentException(); - if (n == 0) + if (n < 0) { + throw new IllegalArgumentException("Zahl darf nicht negativ sein."); + } else if (n == 0) return 0; - if (n == 1 || n == 2) + else if (n == 1 || n == 2) return n; else { return fakultaet(n-1) * n;