Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung
Hallo ich soll in mehreren Methoden prüfen ob meine Lebensmittelsammlung gesetzt wurde oder nicht, aber bei mir zeigt es an das es so nicht stimmt. Könnte mir jemand sagen, wie ich es richtig prüfe?
Java:
for(Zutat zutat : z){
if (sammlung==null) {
throw new IllegalStateException("Ungueltige Sammlung!");
}
//ich brauche nur Hilfe zum oberen if(sammlung.getLebensmittel(zutat.getLebensmittel())==null) {
throw new IllegalArgumentException("Lebensmittel nicht in Lebensmittelsammlung!");
}
Wenn du schreibst " .... es zeigt an .... " heisst das der Compiler (in Eclipse oder so) zeigt schon einen Fehler an oder kriegst du diese IllegalStateException ?
Ich muss es in ein Portal hochladen und das Portal testet mein Code und dort kriege ich die Fehlermeldung, dass keine Exception geworfen wird, wenn die Sammlung nicht gesetzt wurde.
Hier die Aufgabenstellung:
Sollte die Lebensmittelsammlung nicht gesetzt sein, werfen Sie eineIllegalStateException.
Java:
public class Rezept {
private String name;
private int anzahlPersonen;
private String zubereitung;
private LebensmittelSammlung sammlung;
LinkedList<Zutat> z = new LinkedList<Zutat>();
public Rezept(String name, int anzahlPersonen) {
this.name = name;
this.anzahlPersonen = anzahlPersonen;
this.z = new LinkedList<Zutat>();
}
public String getName() {
return name;
}
public int getAnzahlPersonen() {
return anzahlPersonen;
}
public boolean addZutat(Zutat zutat) {
if(this.z.contains(zutat)) {
return false;
} else {
this.z.add(zutat);
return true;
}
}
public List<Zutat> getZutaten() {
return Collections.unmodifiableList(z);
}
public void setSammlung(LebensmittelSammlung sammlung) {
this.sammlung = sammlung;
}
public boolean kannGekochtWerden(String[] zutaten) {
for(Zutat zutat : z){
if (sammlung==null) {
throw new IllegalStateException("Ungueltige Sammlung!");
}
if(sammlung.getLebensmittel(zutat.getLebensmittel())==null) {
throw new IllegalArgumentException("Lebensmittel nicht in Lebensmittelsammlung!");
}
if ( !sammlung.getLebensmittel(zutat.getLebensmittel()).istImmerVorhanden() ) {
for (int i = 0; i < zutaten.length; i ++){
if ( zutat.getLebensmittel().equals(zutaten[i]) ) {
break;
} else if ( !zutat.getLebensmittel().equals(zutaten[i]) && i==zutaten.length-1 ) {
return false;
}
}
}
}
return true;
}
Das ist auch Richtig das keine Exception geworfen wird. Wen z keine Elemente enthält wird der Rumpf der for-schleife nicht durchlaufen und die Prüfung sammlung == null wird nicht ausgeführt. Solche Prüfungen macht man am besten als erstes in der Methode ;-)
Eigentlich müsste eine LinkedList automatisch nach der Reihenfolges des Hinzufügens sortiert sein, zumindest sofern nicht an anderer stelle eine umsortierung stattfindet wie z.b. ein einfügen an einen bestimmten index.
In dem fall müsstest du in deinen Zutaten den Zeitpunkt des Einfügen speichern und dann entsprechend die Sortierung danach vornehmen z.B. über Collections.sort.
--EDIT--
Da du deinen Post bereits bearbeit hast geh ich mal davon aus das du das Problem mit der Sortierung selbst gelöst hast.