Kommentare hinzugefügt

master
andre 2024-06-23 21:32:22 +02:00
parent f8aea0ce36
commit dfc1981aee
4 changed files with 150 additions and 113 deletions

View File

@ -10,6 +10,11 @@ public class Packstation {
*/ */
public Paket[][] station; public Paket[][] station;
//Standard-Konstruktor
public Packstation() {
station = new Paket[5][4];
}
/** /**
* Dieser Konstruktor legt eine Packstation mit benutzerdefinierter Größe an. * Dieser Konstruktor legt eine Packstation mit benutzerdefinierter Größe an.
* @param breite: Die Anzahl an Fächern in der Breite der Packstation. * @param breite: Die Anzahl an Fächern in der Breite der Packstation.
@ -22,9 +27,6 @@ public class Packstation {
station = new Paket[breite][hoehe]; 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 * Legt ein Paket an einer freien Stelle in der Packstation ab und gibt die

View File

@ -5,19 +5,23 @@ public class Paket {
public String name; public String name;
public String adress; public String adress;
//Konstruktor
public Paket (String empfaenger, String adresse) { public Paket (String empfaenger, String adresse) {
name = empfaenger; name = empfaenger;
adress = adresse; adress = adresse;
} }
//Getter-Methode für Adresse
public String getAnschrift() { public String getAnschrift() {
return adress; return adress;
} }
//Getter-Methode für Empfänger
public String getEmpfaenger() { public String getEmpfaenger() {
return name; return name;
} }
//Ausgabe der Paketinformationen
public String toString() { public String toString() {
return name + "\n" + adress; return name + "\n" + adress;
} }

View File

@ -18,17 +18,25 @@ public class Rechner {
System.out.println("[ m | d | e | f ]"); System.out.println("[ m | d | e | f ]");
System.out.print("Geben Sie das zugehörige Zeichen an: "); System.out.print("Geben Sie das zugehörige Zeichen an: ");
//Eingabe
input = sc.nextLine(); input = sc.nextLine();
//Fehler bei Zeicheneingabe abfangen
if (input.length() > 1) { if (input.length() > 1) {
System.out.println("Nur ein Zeichen eingeben. Versuche es erneut."); System.out.println("Nur ein Zeichen eingeben. Versuche es erneut.");
} else if (input.length() < 1) { } else if (input.length() < 1) {
System.out.println("Bitte ein Zeichen eingeben. Versuche es erneut."); System.out.println("Bitte ein Zeichen eingeben. Versuche es erneut.");
} else { } else {
//Zeichen herausfinden
char c = input.charAt(0); char c = input.charAt(0);
//Zeichen an berechnung() übergeben
int ergebnis = berechnung(c); int ergebnis = berechnung(c);
//Ergebnis nur ausgeben, wenn Ergebnis nicht -1 ist
if (ergebnis != -1) { if (ergebnis != -1) {
System.out.println("Ergebnis: " + ergebnis); System.out.println("Ergebnis: " + ergebnis);
//Zeilenumruch aus dem Buffer herausfiltern
sc.nextLine(); sc.nextLine();
} }
} }
@ -48,75 +56,96 @@ public class Rechner {
int ergebnis; int ergebnis;
switch(c) { switch(c) {
//Bedingung: Multiplizieren
case 'm': case 'm':
System.out.println("\n* Multiplikation *"); System.out.println("\n* Multiplikation *");
System.out.print("Ersten Faktor eingeben: "); System.out.print("Ersten Faktor eingeben: ");
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();
//Versuche multiplizieren() durchzuführen
try { try {
ergebnis = multiplizieren(faktor1, faktor2); ergebnis = multiplizieren(faktor1, faktor2);
return ergebnis; return ergebnis;
//Fange Fehler ab und gebe Nachricht aus
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
//Zeilenumruch aus dem Buffer herausfiltern
sc.nextLine(); sc.nextLine();
ergebnis = -1; ergebnis = -1;
return ergebnis; return ergebnis;
} }
//Bedingung: Dividieren
case 'd': case 'd':
System.out.println("\n* Division *"); System.out.println("\n* Division *");
System.out.print("Dividend eingeben: "); System.out.print("Dividend eingeben: ");
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();
//Versuche dividieren() durchzuführen
try { try {
ergebnis = dividieren(dividend, divisor); ergebnis = dividieren(dividend, divisor);
return ergebnis; return ergebnis;
//Fange Fehler ab und gebe Nachricht aus
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
//Zeilenumruch aus dem Buffer herausfiltern
sc.nextLine(); sc.nextLine();
ergebnis = -1; ergebnis = -1;
return ergebnis; return ergebnis;
//Fange Fehler (mit 0 dividieren) ab und gebe Nachricht aus
} catch (ArithmeticException e) { } catch (ArithmeticException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
//Zeilenumruch aus dem Buffer herausfiltern
sc.nextLine(); sc.nextLine();
ergebnis = -1; ergebnis = -1;
return ergebnis; return ergebnis;
} }
//Bedingung: Exponent
case 'e': case 'e':
System.out.println("\n* Exponent *"); System.out.println("\n* Exponent *");
System.out.print("Grundwert eingeben: "); System.out.print("Grundwert eingeben: ");
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();
//Versuche exponent() durchzuführen
try { try {
ergebnis = exponent(grundwert, exponent); ergebnis = exponent(grundwert, exponent);
return ergebnis; return ergebnis;
//Fange Fehler ab und gebe Nachricht aus
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
//Zeilenumruch aus dem Buffer herausfiltern
sc.nextLine(); sc.nextLine();
ergebnis = -1; ergebnis = -1;
return ergebnis; return ergebnis;
} }
//Bedingung: Fakultät
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();
//Versuche fakultaet() durchzuführen
try { try {
ergebnis = fakultaet(n); ergebnis = fakultaet(n);
return ergebnis; return ergebnis;
//Fange Fehler ab und gebe Nachricht aus
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
//Zeilenumruch aus dem Buffer herausfiltern
sc.nextLine(); sc.nextLine();
ergebnis = -1; ergebnis = -1;
return ergebnis; return ergebnis;
} }
// Zeichen stimmt nicht überein
default: default:
//Gebe Fehlermeldung aus
System.out.println("Kein gültiges Zeichen eingegeben! Bitte Versuche es erneut."); System.out.println("Kein gültiges Zeichen eingegeben! Bitte Versuche es erneut.");
ergebnis = -1; ergebnis = -1;
return ergebnis; return ergebnis;
@ -133,15 +162,15 @@ public class Rechner {
public static int multiplizieren(int faktor1, int faktor2) { public static int multiplizieren(int faktor1, int faktor2) {
if (faktor1 == 0 || faktor2 == 0) if (faktor1 == 0 || faktor2 == 0)
return 0; return 0;
if (faktor1 == 1) else if (faktor1 == 1)
return faktor2; return faktor2;
if (faktor2 == 1) else if (faktor2 == 1)
return faktor1; 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!"); throw new IllegalArgumentException("Faktoren dürfen nicht negativ sein!");
} } else
return faktor1 + multiplizieren(faktor1, faktor2-1);
return faktor1 + multiplizieren(faktor1, faktor2-1);
} }
/** /**
@ -153,16 +182,18 @@ public class Rechner {
* @throws ArithmeticException Wenn der Divisor 0 ist * @throws ArithmeticException Wenn der Divisor 0 ist
* */ * */
public static int dividieren(int dividend, int divisor) { public static int dividieren(int dividend, int divisor) {
//Wenn Divisor 0 ist, gebe Fehler mit Meldung zurück
if (divisor == 0) if (divisor == 0)
throw new ArithmeticException("Durch Null teilen nicht möglich!"); 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!"); throw new IllegalArgumentException("Dividend und Divisor dürfen nicht negativ sein!");
if (divisor == 1) else if (divisor == 1)
return dividend; return dividend;
if (dividend >= divisor) else if (dividend >= divisor)
return 1 + dividieren(dividend-divisor, divisor); return 1 + dividieren(dividend-divisor, divisor);
else
return 0; return 0;
} }
/** /**
@ -174,11 +205,12 @@ public class Rechner {
* @throws IllegalArgumentException Wenn einer der Werte negativ ist * @throws IllegalArgumentException Wenn einer der Werte negativ ist
*/ */
public static int exponent(int grundwert, int exponent) { 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) if(grundwert < 0 || exponent < 0)
throw new IllegalArgumentException("Die Basis und der Exponent dürfen nicht negativ sein!"); throw new IllegalArgumentException("Die Basis und der Exponent dürfen nicht negativ sein!");
if (exponent == 0) else if (exponent == 0)
return 1; return 1;
if(grundwert == 1) else if(grundwert == 1)
return grundwert; return grundwert;
else if(exponent == 1) else if(exponent == 1)
return grundwert; return grundwert;
@ -193,7 +225,8 @@ public class Rechner {
* @return Die Fakultät der Zahl * @return Die Fakultät der Zahl
* @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 {
//Wenn Zahl negativ ist, gebe Fehler mit Meldung zurück
if (n < 0) { if (n < 0) {
throw new IllegalArgumentException("Zahl darf nicht negativ sein."); throw new IllegalArgumentException("Zahl darf nicht negativ sein.");
} else if (n == 0) } else if (n == 0)

View File

@ -9,129 +9,127 @@ public class TestPacket {
public static void main(String[] args) { public static void main(String[] args) {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
boolean right = false;
boolean gestoppt = false; boolean gestoppt = false;
//Packstation instanziieren //Packstation instanziieren
Packstation ps = new Packstation(); Packstation ps = new Packstation();
//HashMap um Pakete später benennen zu können //HashMap um Pakete später benennen zu können
Map<String, Paket> pakete = new HashMap<>(); Map<String, Paket> pakete = new HashMap<>();
try {
while(!right) {
//Auswahl der Packstation-Konstruktoren //Auswahl der Packstation-Konstruktoren
System.out.println("* Packstation wählen *"); System.out.println("* Packstation wählen *");
System.out.println("Standardgröße[1] | Benutzerdefinierte Größe[2]"); System.out.println("Standardgröße[1] | Benutzerdefinierte Größe[2]");
//Nutzereingabe //Nutzereingabe
System.out.print("Auswahl: "); System.out.print("Auswahl: ");
int auswahl = sc.nextInt(); int auswahl = sc.nextInt();
//Auswahl des Standardkonstruktors switch(auswahl) {
if (auswahl == 1) {
case 1: //Auswahl des Standardkonstruktors
System.out.println("\n* Standardgröße gewählt *"); System.out.println("\n* Standardgröße gewählt *");
System.out.println("Breite: 5, Höhe: 4"); System.out.println("Breite: 5, Höhe: 4");
right = true;
break;
//Auswahl des benutzerdefinierten Konstruktors case 2: //Auswahl des benutzerdefinierten Konstruktors
} else if (auswahl == 2) {
//Eingabe der Werte für den Konstruktor //Eingabe der Werte für den Konstruktor
System.out.println("\n* Bitte Werte eingeben *"); System.out.println("\n* Bitte Werte eingeben *");
System.out.print("Breite: "); System.out.print("Breite: ");
int breite = sc.nextInt(); int breite = sc.nextInt();
System.out.print("Hoehe: "); System.out.print("Hoehe: ");
int hoehe = sc.nextInt(); int hoehe = sc.nextInt();
//Instanziieren der Klasse //Instanziieren der Klasse
ps = new Packstation(breite, hoehe); ps = new Packstation(breite, hoehe);
System.out.println("\n* Benutzerdefinierte Größe gewählt *"); System.out.println("\n* Benutzerdefinierte Größe gewählt *");
System.out.printf("Breite: %d, Höhe: %d\n", breite, hoehe); System.out.printf("Breite: %d, Höhe: %d\n", breite, hoehe);
right = true;
break;
} else { default: //Fehlerhafte Eingabe
sc.close(); System.out.println("\nFehlerhafte Eingabe! Bitte versuchen Sie es erneut.\n");
//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;
}
} }
} 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(); sc.close();
} }
} }