diff --git a/PR1_Pflichtuebung6/src/ueb6/Packstation.java b/PR1_Pflichtuebung6/src/ueb6/Packstation.java index 2a4b438..110e0df 100644 --- a/PR1_Pflichtuebung6/src/ueb6/Packstation.java +++ b/PR1_Pflichtuebung6/src/ueb6/Packstation.java @@ -10,6 +10,11 @@ public class Packstation { */ public Paket[][] station; + //Standard-Konstruktor + public Packstation() { + station = new Paket[5][4]; + } + /** * Dieser Konstruktor legt eine Packstation mit benutzerdefinierter Größe an. * @param breite: Die Anzahl an Fächern in der Breite der Packstation. @@ -22,9 +27,6 @@ public class Packstation { station = new Paket[breite][hoehe]; } - public Packstation() { - station = new Paket[5][4]; - } /** * Legt ein Paket an einer freien Stelle in der Packstation ab und gibt die diff --git a/PR1_Pflichtuebung6/src/ueb6/Paket.java b/PR1_Pflichtuebung6/src/ueb6/Paket.java index d6fa612..f90bd4c 100644 --- a/PR1_Pflichtuebung6/src/ueb6/Paket.java +++ b/PR1_Pflichtuebung6/src/ueb6/Paket.java @@ -5,19 +5,23 @@ public class Paket { public String name; public String adress; + //Konstruktor public Paket (String empfaenger, String adresse) { name = empfaenger; adress = adresse; } + //Getter-Methode für Adresse public String getAnschrift() { return adress; } + //Getter-Methode für Empfänger public String getEmpfaenger() { return name; } + //Ausgabe der Paketinformationen public String toString() { return name + "\n" + adress; } diff --git a/PR1_Pflichtuebung6/src/ueb6/Rechner.java b/PR1_Pflichtuebung6/src/ueb6/Rechner.java index 6a28b88..7143428 100644 --- a/PR1_Pflichtuebung6/src/ueb6/Rechner.java +++ b/PR1_Pflichtuebung6/src/ueb6/Rechner.java @@ -18,17 +18,25 @@ public class Rechner { System.out.println("[ m | d | e | f ]"); System.out.print("Geben Sie das zugehörige Zeichen an: "); - + //Eingabe input = sc.nextLine(); + + //Fehler bei Zeicheneingabe abfangen if (input.length() > 1) { System.out.println("Nur ein Zeichen eingeben. Versuche es erneut."); } else if (input.length() < 1) { System.out.println("Bitte ein Zeichen eingeben. Versuche es erneut."); } else { + //Zeichen herausfinden char c = input.charAt(0); + + //Zeichen an berechnung() übergeben int ergebnis = berechnung(c); + + //Ergebnis nur ausgeben, wenn Ergebnis nicht -1 ist if (ergebnis != -1) { System.out.println("Ergebnis: " + ergebnis); + //Zeilenumruch aus dem Buffer herausfiltern sc.nextLine(); } } @@ -48,75 +56,96 @@ public class Rechner { int ergebnis; switch(c) { + + //Bedingung: Multiplizieren case 'm': System.out.println("\n* Multiplikation *"); System.out.print("Ersten Faktor eingeben: "); int faktor1 = sc.nextInt(); System.out.print("Zweiten Faktor eingeben: "); int faktor2 = sc.nextInt(); + + //Versuche multiplizieren() durchzuführen try { ergebnis = multiplizieren(faktor1, faktor2); return ergebnis; + //Fange Fehler ab und gebe Nachricht aus } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); + //Zeilenumruch aus dem Buffer herausfiltern sc.nextLine(); ergebnis = -1; return ergebnis; } - + //Bedingung: Dividieren case 'd': System.out.println("\n* Division *"); System.out.print("Dividend eingeben: "); int dividend = sc.nextInt(); System.out.print("Divisor eingeben: "); int divisor = sc.nextInt(); + //Versuche dividieren() durchzuführen try { ergebnis = dividieren(dividend, divisor); return ergebnis; + //Fange Fehler ab und gebe Nachricht aus } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); + //Zeilenumruch aus dem Buffer herausfiltern sc.nextLine(); ergebnis = -1; return ergebnis; + //Fange Fehler (mit 0 dividieren) ab und gebe Nachricht aus } catch (ArithmeticException e) { System.out.println(e.getMessage()); + //Zeilenumruch aus dem Buffer herausfiltern sc.nextLine(); ergebnis = -1; return ergebnis; } + //Bedingung: Exponent case 'e': System.out.println("\n* Exponent *"); System.out.print("Grundwert eingeben: "); int grundwert = sc.nextInt(); System.out.print("Exponent eingeben: "); int exponent = sc.nextInt(); + //Versuche exponent() durchzuführen try { ergebnis = exponent(grundwert, exponent); return ergebnis; + //Fange Fehler ab und gebe Nachricht aus } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); + //Zeilenumruch aus dem Buffer herausfiltern sc.nextLine(); ergebnis = -1; return ergebnis; } + //Bedingung: Fakultät case 'f': System.out.println("\n* Fakultät *"); System.out.print("Zahl eingeben: "); int n = sc.nextInt(); + //Versuche fakultaet() durchzuführen try { ergebnis = fakultaet(n); return ergebnis; + //Fange Fehler ab und gebe Nachricht aus } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); + //Zeilenumruch aus dem Buffer herausfiltern sc.nextLine(); ergebnis = -1; return ergebnis; } + // Zeichen stimmt nicht überein default: + //Gebe Fehlermeldung aus System.out.println("Kein gültiges Zeichen eingegeben! Bitte Versuche es erneut."); ergebnis = -1; return ergebnis; @@ -133,15 +162,15 @@ public class Rechner { public static int multiplizieren(int faktor1, int faktor2) { if (faktor1 == 0 || faktor2 == 0) return 0; - if (faktor1 == 1) + else if (faktor1 == 1) return faktor2; - if (faktor2 == 1) + else if (faktor2 == 1) return faktor1; - if (faktor1 < 0 || faktor2 < 0) { + //Wenn eine der Zahlen negativ ist, gebe Fehler mit Meldung zurück + else if (faktor1 < 0 || faktor2 < 0) { throw new IllegalArgumentException("Faktoren dürfen nicht negativ sein!"); - } - - return faktor1 + multiplizieren(faktor1, faktor2-1); + } else + return faktor1 + multiplizieren(faktor1, faktor2-1); } /** @@ -153,16 +182,18 @@ public class Rechner { * @throws ArithmeticException Wenn der Divisor 0 ist * */ public static int dividieren(int dividend, int divisor) { + //Wenn Divisor 0 ist, gebe Fehler mit Meldung zurück if (divisor == 0) throw new ArithmeticException("Durch Null teilen nicht möglich!"); - if (dividend < 0 || divisor < 0) + //Wenn eine der Zahlen negativ ist, gebe Fehler mit Meldung zurück + else if (dividend < 0 || divisor < 0) throw new IllegalArgumentException("Dividend und Divisor dürfen nicht negativ sein!"); - if (divisor == 1) + else if (divisor == 1) return dividend; - if (dividend >= divisor) + else if (dividend >= divisor) return 1 + dividieren(dividend-divisor, divisor); - - return 0; + else + return 0; } /** @@ -174,11 +205,12 @@ public class Rechner { * @throws IllegalArgumentException Wenn einer der Werte negativ ist */ public static int exponent(int grundwert, int exponent) { + //Wenn eine der Zahlen negativ ist, gebe Fehler mit Meldung zurück if(grundwert < 0 || exponent < 0) throw new IllegalArgumentException("Die Basis und der Exponent dürfen nicht negativ sein!"); - if (exponent == 0) + else if (exponent == 0) return 1; - if(grundwert == 1) + else if(grundwert == 1) return grundwert; else if(exponent == 1) return grundwert; @@ -193,7 +225,8 @@ public class Rechner { * @return Die Fakultät der Zahl * @throws IllegalArgumentException Wenn die Zahl negativ ist */ - public static int fakultaet(int n) throws IllegalArgumentException { + public static int fakultaet(int n) throws IllegalArgumentException { + //Wenn Zahl negativ ist, gebe Fehler mit Meldung zurück if (n < 0) { throw new IllegalArgumentException("Zahl darf nicht negativ sein."); } else if (n == 0) diff --git a/PR1_Pflichtuebung6/src/ueb6/TestPacket.java b/PR1_Pflichtuebung6/src/ueb6/TestPacket.java index 4a37eec..135d7f3 100644 --- a/PR1_Pflichtuebung6/src/ueb6/TestPacket.java +++ b/PR1_Pflichtuebung6/src/ueb6/TestPacket.java @@ -9,129 +9,127 @@ public class TestPacket { public static void main(String[] args) { Scanner sc = new Scanner(System.in); + boolean right = false; boolean gestoppt = false; //Packstation instanziieren Packstation ps = new Packstation(); - + //HashMap um Pakete später benennen zu können Map pakete = new HashMap<>(); - - try { + + + while(!right) { //Auswahl der Packstation-Konstruktoren System.out.println("* Packstation wählen *"); System.out.println("Standardgröße[1] | Benutzerdefinierte Größe[2]"); - + //Nutzereingabe System.out.print("Auswahl: "); int auswahl = sc.nextInt(); - //Auswahl des Standardkonstruktors - if (auswahl == 1) { + switch(auswahl) { + + case 1: //Auswahl des Standardkonstruktors System.out.println("\n* Standardgröße gewählt *"); System.out.println("Breite: 5, Höhe: 4"); + right = true; + break; - //Auswahl des benutzerdefinierten Konstruktors - } else if (auswahl == 2) { - + case 2: //Auswahl des benutzerdefinierten Konstruktors //Eingabe der Werte für den Konstruktor System.out.println("\n* Bitte Werte eingeben *"); System.out.print("Breite: "); int breite = sc.nextInt(); System.out.print("Hoehe: "); int hoehe = sc.nextInt(); - + //Instanziieren der Klasse ps = new Packstation(breite, hoehe); System.out.println("\n* Benutzerdefinierte Größe gewählt *"); System.out.printf("Breite: %d, Höhe: %d\n", breite, hoehe); + right = true; + break; - } else { - sc.close(); - //Fehlermeldung, wenn nicht Option 1 oder 2 gewählt wird - throw new IllegalArgumentException("Fehlerhafte Eingabe."); - - } - - while(!gestoppt) { - //Auswahl der auszuführenden Methode - System.out.println("\n* Operation wählen *"); - System.out.println("Paket ablegen[1] | Freie Boxen zählen[2] | Information zum Boxenplatz[3] | Programm beenden[4]"); - - //Nutzereingabe - System.out.print("Auswahl: "); - auswahl = sc.nextInt(); - sc.nextLine(); - - switch(auswahl) { - - case 1: - System.out.println("\n* Paket ablegen gewählt *"); - - //Nutzereingabe für Konstruktor: Empfaenger - System.out.print("Name: "); - String name = sc.nextLine(); - - //Nutzereingabe für Konstruktor: Adresse - System.out.print("Adresse: "); - String adresse = sc.nextLine(); - - //Nutzereingabe zur Benennung des Objekts - System.out.print("Paketbezeichnung: "); - String paketname = sc.nextLine(); - pakete.put(paketname, new Paket(name, adresse)); - - try { - //Ablegen des Pakets - ps.legePaketAb(pakete.get(paketname)); - - } - //Fehlermeldung falls Box voll - catch (IllegalStateException e) { - System.out.println(e.getMessage()); - } - break; - - case 2: - System.out.println("* Freie Boxen zählen gewählt *"); - - //Freie Boxen zählen - int freieBoxen = ps.zaehleFreieBoxen(); - if (freieBoxen == 1) - System.out.println("Es ist " + ps.zaehleFreieBoxen() + " Box verfügbar."); - else - System.out.println("Es sind " + ps.zaehleFreieBoxen() + " Boxen verfügbar."); - break; - - case 3: - System.out.println("\n* Information zum Boxenplatz *"); - - //Formatierte Ausgabe der Packstation-Boxen - ps.printStation(); - - //Nutzereingabe für Spalte - System.out.print("\nSpalte wählen: "); - int spalte = sc.nextInt(); - - //Nutzereingabe für Reihe - System.out.print("Reihe spalten: "); - int reihe = sc.nextInt(); - - //Ausgabe der Information - System.out.println(ps.informationZumBoxenplatz(spalte, reihe)); - break; - - case 4: - //Schließen des Programmes - System.out.println(" * Programm wird beendet * "); - gestoppt = true; - break; - } - + default: //Fehlerhafte Eingabe + System.out.println("\nFehlerhafte Eingabe! Bitte versuchen Sie es erneut.\n"); } - } catch(IllegalArgumentException e) { - System.out.println(e.getMessage()); } + while(!gestoppt) { + //Auswahl der auszuführenden Methode + System.out.println("\n* Operation wählen *"); + System.out.println("Paket ablegen[1] | Freie Boxen zählen[2] | Information zum Boxenplatz[3] | Programm beenden[4]"); + + //Nutzereingabe + System.out.print("Auswahl: "); + int auswahl = sc.nextInt(); + sc.nextLine(); + + switch(auswahl) { + + case 1: + System.out.println("\n* Paket ablegen gewählt *"); + + //Nutzereingabe für Konstruktor: Empfaenger + System.out.print("Name: "); + String name = sc.nextLine(); + + //Nutzereingabe für Konstruktor: Adresse + System.out.print("Adresse: "); + String adresse = sc.nextLine(); + + //Nutzereingabe zur Benennung des Objekts + System.out.print("Paketbezeichnung: "); + String paketname = sc.nextLine(); + pakete.put(paketname, new Paket(name, adresse)); + + try { + //Ablegen des Pakets + ps.legePaketAb(pakete.get(paketname)); + + } + //Fehlermeldung falls Box voll + catch (IllegalStateException e) { + System.out.println(e.getMessage()); + } + break; + + case 2: + System.out.println("\n* Freie Boxen zählen gewählt *"); + + //Freie Boxen zählen + int freieBoxen = ps.zaehleFreieBoxen(); + if (freieBoxen == 1) + System.out.println("Es ist " + ps.zaehleFreieBoxen() + " Box verfügbar."); + else + System.out.println("Es sind " + ps.zaehleFreieBoxen() + " Boxen verfügbar."); + break; + + case 3: + System.out.println("\n* Information zum Boxenplatz *"); + + //Formatierte Ausgabe der Packstation-Boxen + ps.printStation(); + + //Nutzereingabe für Spalte + System.out.print("\nSpalte wählen: "); + int spalte = sc.nextInt(); + + //Nutzereingabe für Reihe + System.out.print("Reihe spalten: "); + int reihe = sc.nextInt(); + + //Ausgabe der Information + System.out.println(ps.informationZumBoxenplatz(spalte, reihe)); + break; + + case 4: + //Schließen des Programmes + System.out.println("\n* Programm wird beendet * "); + gestoppt = true; + break; + } + } sc.close(); } }