Hallo, ich habe folgende Aufgabe: Implementieren Sie die Methode fillBucket(List<Integer>) items, Integer capacity), welche die Elemente der Liste items der Reihenfolge nach durchgeht und solange aufaddiert, dass capacity nicht überschritten wird. Alle Elemente, die hineingepasst haben, sollen als List wieder zurückgegeben werden. Sollte eine negative Zahl (oder null) auftreten, werfen Sie eine IllegalArgumentException. Werfen Sie diese Exception ebenso, falls capacity <=0 oder items oder capacity ungültig (null) ist.
Mein Code dazu:
Das Problem ist hier, dass ich nie in den catch Block komme, obwohl die if Anweisungen bei z.B. nur negativen Zahlen im Array falsch sind. Ich bekomme dann ein leeres Array raus, anstatt die Ausgabe vom catch Block. Kann mir da jemand vielleicht auf die Sprünge helfen?
Mein Code dazu:
Java:
public static List<Integer> fillBucket(List<Integer> items, Integer capacity) throws IllegalArgumentException{
int counter = 0;
List<Integer> result = new LinkedList<Integer>();
try {
for (int i = 0; i < items.size(); i++) {
if (items.get(i) >= 0 && capacity > 0) {
if (capacity != null || items != null) {
counter += items.get(i);
if (capacity < counter) {
counter -= items.get(i);
} else {
result.add(items.get(i));
}
}
}
}
} catch (IllegalArgumentException e) {
System.out.println("Fehler: " + e.getMessage());
}
return result;
}
Das Problem ist hier, dass ich nie in den catch Block komme, obwohl die if Anweisungen bei z.B. nur negativen Zahlen im Array falsch sind. Ich bekomme dann ein leeres Array raus, anstatt die Ausgabe vom catch Block. Kann mir da jemand vielleicht auf die Sprünge helfen?