140 lines
4.8 KiB
Java
140 lines
4.8 KiB
Java
package gfn.marc.version2;
|
|
|
|
/*
|
|
Version 2: ArrayLists
|
|
*/
|
|
|
|
import gfn.marc.Sitzplatz;
|
|
|
|
import java.util.*;
|
|
|
|
public class Main_v2 {
|
|
|
|
// VORBEREITUNG
|
|
// ArrayList für Sitzplan erstellen
|
|
static ArrayList<Sitzplatz> sitzplan = new ArrayList<>(210);
|
|
|
|
public static void main(String[] args) {
|
|
|
|
// Sitzplan-ArrayList füllen
|
|
for (int i = 0; i < 7; i++) {
|
|
for (int j = 0; j < 30; j++) {
|
|
sitzplan.add(new Sitzplatz(((i + 1) * 100 + (j + 1)), false));
|
|
}
|
|
}
|
|
|
|
// Hilfs-HashSet für freie Plätze (wie in der Vorgabe)
|
|
HashSet<Integer> alleFreienSitzplaetze = new HashSet<Integer>
|
|
(Arrays.asList(102, 203, 204, 207, 208, 209, 303, 304, 305, 306, 307, 308));
|
|
|
|
// Freie Plätze in Sitzplan-Array eintragen
|
|
for (Sitzplatz sitzplatz : sitzplan) {
|
|
if (alleFreienSitzplaetze.contains(sitzplatz.getNummer())) {
|
|
sitzplatz.setStatus(true);
|
|
}
|
|
}
|
|
|
|
// LÖSUNG
|
|
// Gewünschte Sitzplatzanzahl eingeben
|
|
boolean reservierung = true;
|
|
Scanner eingabe = new Scanner(System.in);
|
|
int anzahlSitze = 0;
|
|
System.out.println("Bitte geben Sie die gewünschte Anzahl von Sitzplätzen ein! (1 - 30)");
|
|
|
|
// Eingabe überprüfen
|
|
while (true) {
|
|
try {
|
|
anzahlSitze = eingabe.nextInt();
|
|
if (anzahlSitze < 1 || anzahlSitze > 30) {
|
|
System.err.println("Die eingegebene Zahl ist ungültig!");
|
|
System.err.println("Bitte geben Sie eine Zahl zwischen 1 und 30 ein.");
|
|
} else {
|
|
break;
|
|
}
|
|
} catch (InputMismatchException ime) {
|
|
System.err.println("Bitte geben Sie eine Zahl ein!");
|
|
eingabe.next();
|
|
}
|
|
|
|
}
|
|
|
|
// Freie Sitzplätze mit der Methode freieSitze() ermitteln
|
|
int freierSitzplatz = freieSitze(anzahlSitze);
|
|
|
|
// Ausgabe der Nummern der freien Sitzplätze
|
|
if (freierSitzplatz != 0 && anzahlSitze > 1) {
|
|
System.out.print("Folgende Sitzplätze können für Sie reserviert werden: ");
|
|
for (int i = 0; i < anzahlSitze; i++) {
|
|
if (i < anzahlSitze - 1) {
|
|
System.out.print(freierSitzplatz + i + ", ");
|
|
} else {
|
|
System.out.print(freierSitzplatz + i);
|
|
}
|
|
}
|
|
System.out.println();
|
|
} else if (freierSitzplatz != 0) {
|
|
System.out.println("Folgender Sitzplatz kann für Sie reserviert werden: " + freierSitzplatz);
|
|
|
|
// Falls gewünschte Anzahl von freien Sitzplätzen nicht vorhanden
|
|
} else {
|
|
System.out.println(anzahlSitze > 1 ? "Leider konnten wir für Sie nicht die gewünschte Anzahl freier " +
|
|
"Sitzplätze reservieren." : "Leider haben wir derzeit keinen freien Sitzplatz.");
|
|
reservierung = false;
|
|
}
|
|
|
|
// Abfrage "Möchten Sie reservieren?" mit Überprüfung der Eingabe
|
|
while (reservierung) {
|
|
System.out.println("Möchten Sie reservieren? (j/n)");
|
|
String auswahl = eingabe.next().trim().toLowerCase();
|
|
|
|
// Wenn ja ("j")
|
|
if (auswahl.matches("j")) {
|
|
|
|
for (int i = 0; i < anzahlSitze; i++) {
|
|
for (Sitzplatz sitzplatz : sitzplan) {
|
|
if (freierSitzplatz + i == sitzplatz.getNummer()) {
|
|
sitzplatz.setStatus(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
System.out.println(anzahlSitze > 1 ? "Die Sitzplätze wurden für Sie reserviert!" :
|
|
"Der Sitzplatz wurde für Sie reserviert!");
|
|
|
|
reservierung = false;
|
|
|
|
// Wenn nein ("n")
|
|
} else if (auswahl.matches("n")) {
|
|
reservierung = false;
|
|
|
|
// Wenn Eingabe ungültig
|
|
} else {
|
|
System.err.println("Eingabe ungültig!");
|
|
}
|
|
}
|
|
|
|
System.out.println("Vielen Dannk für Ihren Besuch und auf Wiedersehen!");
|
|
|
|
// OpÜbrige freie Sitzplätze
|
|
System.out.println("\nÜbrige freie Sitzplätze: ");
|
|
for (Sitzplatz sitzplatz : sitzplan) {
|
|
if (sitzplatz.isStatus()) {
|
|
System.out.print(sitzplatz.getNummer() + " ");
|
|
}
|
|
}
|
|
System.out.println();
|
|
|
|
}
|
|
|
|
static int freieSitze(int anzahlSitze) {
|
|
int zaehler = 0;
|
|
for (int i = 0; i < sitzplan.size(); i++) {
|
|
zaehler = sitzplan.get(i).isStatus() ? zaehler + 1 : 0;
|
|
if (zaehler == anzahlSitze) {
|
|
return sitzplan.get(i - (zaehler - 1)).getNummer();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
}
|