Dringend Java Hilfe benötigt

Gaudimagspam

Aktives Mitglied
Ich muss mein Assignment um 24:00 hochladen. Ich habe alles programmiert jedoch im Public Test habe ich 10 Fehler bekommen. Davon konnte ich 4 beheben jedoch die anderen 6 noch nicht. Kann man mir bitte dabei helfen ?

[CODE lang="java" title="J unit test"]Mein Error:


testFilmSuchen(PublicTests)
java.lang.AssertionError: expected:<Film@5c0369c4> but was:<null>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
at PublicTests.testFilmSuchen(PublicTests.java:195)


J-Unit Test:

public void testFilmSuchen() {
assertEquals(null, k.filmSuchen("Ein Tag im Zoo"));
k.setPortal(b);

assertEquals(f, k.filmSuchen("Ein Tag im Zoo"));
assertEquals(null, k.filmSuchen("Ein Tag im Kindergarten"));

[/CODE]
 
[CODE lang="java" title="Mein Code"]import java.util.LinkedList;

public class Blyadflix {
private Server server;
private LinkedList<Film> filme = new LinkedList<>();
private LinkedList<Person> personen = new LinkedList<>();
private LinkedList<Kunde> abonnenten = new LinkedList<>();

public Blyadflix(Film film, Server server) {

}

public void filmHinzufuegen(Film film) {
try {
if (null != film && !this.filme.contains(film)) {
this.getFilme().add(film);
}
} catch (Exception e) {

}
public void addPerson(Person p) {
if (null != p) {
this.getPersonen().add(p);
}
}

public void removePerson(Person p) {
if (null != p) {
this.getPersonen().remove(p);
}
}
}[/CODE]


Was genau soll ich ändern?
 
Zuletzt bearbeitet:
Du bist ja ein Scherzkeks. Postest einen Test bzgl. dem Suchen von Filmen, dazu dann den Code zum Hinzufügen, wobei dort auch nur die Hälfte sichtbar ist.

Gehe ich recht in der Annahme, dass PublicTests, Zeile 195, der Zeile 19 in Deinem ersten Post entspricht?
 
Die Infos reichen nicht. Im Test sieht man nicht, wie die Variablen initalisiert werden. Und dein Code sieht auch komisch aus, im Konstruktor passiert nix mit den übergebenen Parametern.
 
Java:
public class Film {
    private Darsteller hauptdarsteller;
    private String titel;
    private int erscheinungsjahr;
    private int fsk;
    private Genre genre;
    private Blyadflix portal;

    public Film(String _titel, int _erscheinungsjahr, int _fsk, Genre _genre, Darsteller _hauptdarsteller) {
        this.titel = _titel;
        this.erscheinungsjahr = _erscheinungsjahr;
        this.fsk = _fsk;
        this.genre = _genre;
        this.hauptdarsteller = _hauptdarsteller;
    }

    @Override
    public boolean equals(Object o) {
        if (!(o instanceof Film)) {
            return false;
        }
        Film f = (Film) o;
        return this.getErscheinungsjahr() == f.getErscheinungsjahr()
                && this.getHauptdarsteller() == f.getHauptdarsteller() && this.getTitel() == f.getTitel()
                && this.getFsk() == f.getFsk() && this.getGenre() == f.getGenre();
    }

    public Darsteller getHauptdarsteller() {
        return hauptdarsteller;
    }

    public void setHauptdarsteller(Darsteller hauptdarsteller) {
        this.hauptdarsteller = hauptdarsteller;
    }

    public String getTitel() {
        return titel;
    }

    public void setTitel(String titel) {
        this.titel = titel;
    }

    public int getErscheinungsjahr() {
        return erscheinungsjahr;
    }

    public void setErscheinungsjahr(int erscheinungsjahr) {
        this.erscheinungsjahr = erscheinungsjahr;
    }

    public int getFsk() {
        return fsk;
    }

    public void setFsk(int fsk) {
        this.fsk = fsk;
    }

    public Genre getGenre() {
        return genre;
    }

    public void setGenre(Genre genre) {
        this.genre = genre;
    }

    public Blyadflix getPortal() {
        return portal;
    }

    public void setPortal(Blyadflix portal) {
        this.portal = portal;
    }
}
 
oder @Gaudikurzvorderabgabe... Das ist zwar immer noch nicht der Code, um des es geht, aber Objekte vergleicht man mit equals; auch innerhalb equals().
 
Java:
import java.util.ArrayList;
import java.util.LinkedList;

public class Kunde extends Person {
    private String adresse;
    private Zahlungsmittel zahlungsmittel;
    private boolean schautFilm;
    private Blyadflix portal;

    public Kunde() {
        super();
    }

    public Kunde(String _name, String _vorname, int _alter, String _adresse, Zahlungsmittel _zahlungsmittel) {
        super(_name, _vorname, _alter);
        this.adresse = _adresse;
        this.zahlungsmittel = _zahlungsmittel;
        this.schautFilm = false;
    }

    public boolean aboKaufen() {
        boolean result = false;
        if (null != this.zahlungsmittel && !this.getPortal().getAbonnenten().contains(this)) {
            this.getPortal().getAbonnenten().add(this);
            result = true;
        }

        return result;
    }

    public boolean aboKuendigen() {
        boolean result = false;
        if (this.getPortal().getAbonnenten().contains(this)) {
            this.getPortal().getAbonnenten().remove(this);
            result = true;
        }

        return result;
    }

    public Film filmSuchen(String titel) {
        try {
            Film result = null;
            for (Film f : this.getPortal().getFilme()) {
                if (f.getTitel() == titel) {
                    result = f;
                }
            }

            return result;
        } catch (Exception e) {
            return null;
        }
    }

    public LinkedList<Film> filmGenre(Genre genre) {
        ArrayList<Film> alleFilme = new ArrayList<>(this.getPortal().getFilme());
        alleFilme.removeIf(f -> f.getGenre() != genre);
        return new LinkedList<>(alleFilme);
    }

    public boolean filmStarten(Film film) {
        try {
            boolean result = false;
            Film filmExistiert = this.filmSuchen(film.getTitel());
            if (null != filmExistiert && this.getPortal().getServer().getKapazitaet() > 0
                    && this.getAlter() >= film.getFsk()) {
                this.getPortal().getServer().setKapazitaet(this.getPortal().getServer().getKapazitaet() - 1);
                this.schautFilm = true;
                result = true;
            }
            return result;
        } catch (Exception e) {
            return false;
        }
    }

    public boolean filmStoppen() {
        try {
            boolean result = false;
            if (this.isSchautFilm()) {
                this.getPortal().getServer().setKapazitaet(this.getPortal().getServer().getKapazitaet() + 1);
                this.schautFilm = false;
                result = true;
            }

            return result;
        } catch (Exception e) {
            return false;
        }
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    public Zahlungsmittel getZahlungsmittel() {
        return zahlungsmittel;
    }

    public void setZahlungsmittel(Zahlungsmittel zahlungsmittel) {
        this.zahlungsmittel = zahlungsmittel;
    }

    public boolean isSchautFilm() {
        return schautFilm;
    }

    public void setSchautFilm(boolean schautFilm) {
        this.schautFilm = schautFilm;
    }

    @Override
    public Blyadflix getPortal() {
        return portal;
    }

    @Override
    public void setPortal(Blyadflix portal) {
        this.portal = portal;
    }

}
 
Und nur ganz am Rande:
Sowas:
Java:
this.getPortal().getServer().setKapazitaet(this.getPortal().getServer().getKapazitaet() + 1);
führt Kapselung doch komplett ad absurdum.

Die Klasse muss also wissen, dass Portal ein Server hat und dass man diese Kapazität erhöhen kann oder muss ... Was entscheidet dieses Klasse über die Kapazität einer Instanz in einer anderen Instanz, die in ihm selbst ist?

Also irgendwie muss man sich über einen Projektnamen nicht aufregen, wenn einem so etwas geboten wird ... Oder bin ich da der Einzige, dem sich da die Nackenhaare aufstellen? Und macht es da nicht Sinn, die Leute von Anfang an mit Tools wie PMD laufen zu lassen? Ggf. mit einem etwas abgespeckten Set an Regeln?
 

Zurück
Oben