Objekt Array Aufgabe mit Busdatenbank

Taso44

Aktives Mitglied
Hallo zusammen,
ich habe eine Aufgabe, in der ich Busse in einer Datenbank "verwalten" soll.
Beim der Methode spechereBus(in die Datenbank) sind mir doch einige Probleme/Fragen aufgetaucht.

Mein Code:
Java:
public void speichereBus(Bus bus) {

        // Übergebener Bus und Bus aus Datenbank haben selbe Linie
        for (int i = 0; i < Datenbank.length; i++) {
            if (Datenbank[i] != null && Datenbank[i].welcheLinie() == bus.welcheLinie()) {
                throw new PR1Exception("Datenbank haben die selbe Linie");
            }
        }

        // Datenbank voll
        for (int i = 0; i < Datenbank.length; i++) {
            if (Datenbank[i] != null) {// Wenn alle Plätze belegt
                throw new PR1Exception("Die Datenbank ist bereits voll");
            }
        }

        for (int i = 0; i < Datenbank.length; i++) {
            if (Datenbank[i] == null) { // Wenn kein Bus vorhanden
                Datenbank[i] = bus;
                break; // break, da sonst jeder i'te Platz mit dem selben Bus belegt werden würde

            }
        }
    }

Bei Datenbank voll nimmt er wohl gleich beim ersten gespeicherten Bus an, dass die Datenbank schon voll ist (Datenbank hat in meinem Programm 100 freie Stellen)
Wisst ihr wie ich das behebe. Ich bin davon ausgegangen, dass ich durch das Datenbank Array laufe und gucke ob jede i'te stelle != null ist, aber bei nur einem
gespeicherten Bus sollte nur ein Platz != null sein und die anderen null.
Außerdem wollte ich fragen (habe ich zwar als Kommentar dazugeschrieben und ausprobiert, will aber sicher gehen), ob ohne das break wirklich jeder i'te Platz mit
dem selben bus belegt werden würde.

Ist ein bisschen viel Text sorry, aber
Danke schonmal für die Hilfe
 
Hier prüfst du jeden Eintrag in Datenbank, sobald ein Element belegt ist (not null) wirfst du eine Exception. Du muss einfach prüfen ob ein Element null ist und wirfst erst die Exception wenn du keinen leeren Platz findest.
Java:
        // Datenbank voll
        for (int i = 0; i < Datenbank.length; i++) {
            if (Datenbank[i] != null) {// Wenn alle Plätze belegt
                throw new PR1Exception("Die Datenbank ist bereits voll");
            }
        }
 
Ob das prüfen auf Null hier sinnvoll ist.
Da prüft du ja ob die Variable inzalisirt ist nicht den Inhalt. Prüfe an der Stelle ob der Platz belegt ist. Wie musst du wissen du füllt ja auch das Array.
Den Sitzplatz gibt es ja also wird er nicht "Null" sein.
 

Zurück
Oben