F
FireInside
Gast
Hallo, bin neu und mir will einfach etwas nicht in den Kopf:
Der Code funktioniert, keine Frage - aber warum?
lastIndex ist am Anfang -1. Es wird geprüft, ob lastIndex den gleichen Wert hat wie element.length-1 (in dem Bsp. also 1). Dies ist nicht der Fall -> lastIndex wird auf 0 gesetzt und in das erste Element "Test" gespeichert.
So, dann wird geschaut ob lastIndex (0) == element.length (1). Nein, also wird lastIndex auf 1 gesetzt und "Test2" in element[1] gespeichert.
Und nun meine Frage: Jetzt wird doch wieder überprüft, ob lastIndex (1) == element.length (1) ist und ja - es ist gleich, also müsste doch die RuntimeException geworfen werden (was aber ja nicht so ist).
Warum? Wo liegt bei mir der Verständnisfehler?
Gruß
Markus
Code:
public class ListeF {
private Object[] element; // Listenelemente
private int lastIndex; // Höchster belegter Index
public ListeF (int len) {
element = new Object[len];
lastIndex = -1; // leere Liste
}
public void insert (Object o) { // am Ende einfügen
if (lastIndex == element.length-1)
throw new RuntimeException("Liste ist bereits voll!");
lastIndex++;
element[lastIndex] = o;
}
public static void main(String[] args) {
ListeF test = new ListeF(3);
test.insert("Test");
test.insert("Test2");
test.insert("Test3");
}
}
Der Code funktioniert, keine Frage - aber warum?
lastIndex ist am Anfang -1. Es wird geprüft, ob lastIndex den gleichen Wert hat wie element.length-1 (in dem Bsp. also 1). Dies ist nicht der Fall -> lastIndex wird auf 0 gesetzt und in das erste Element "Test" gespeichert.
So, dann wird geschaut ob lastIndex (0) == element.length (1). Nein, also wird lastIndex auf 1 gesetzt und "Test2" in element[1] gespeichert.
Und nun meine Frage: Jetzt wird doch wieder überprüft, ob lastIndex (1) == element.length (1) ist und ja - es ist gleich, also müsste doch die RuntimeException geworfen werden (was aber ja nicht so ist).
Warum? Wo liegt bei mir der Verständnisfehler?
Gruß
Markus