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;
//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

View File

@ -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;
}

View File

@ -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)

View File

@ -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<String, Paket> 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();
}
}