4 Antworten

for(int i2 = 0; i2<108; i2++){
int x1 = 0;
hbox1[x1] = new HBox();

Mit diesen drei Zeilen setzt du in dem Objekt hbox[0] eine neue HBox... insgesamt 108 mal. Ob du x1 am Ende der Schleife hochzählst, ist völlig egal - der Wert wird bei jedem Schleifendurchlauf am Anfang auf 0 gesetzt. Will heißen, in dem hbox-Array hat nur hbox[0] einen Wert, hbox[1], hbox[2] und so weiter sind leer. In der zweiten Schleife machst du genau den gleichen Fehler (du arbeitest da nur mit Element 0), deswegen fällt es nicht auf, in der dritten Schleife knallt's dann.

Antwort bewerten Vielen Dank für Deine Bewertung
for (int i2 = 0; i2 < 108; i2++) {
int x1 = 0;
hbox1[x1] = new HBox();
rec1[x1][i2] = new Rectangle(10, 10);
rec1[x1][i2].setFill(Color.BLACK);
if (i2 == 107) {
x1++;
}
}

dein x1 ist immer 0. Damit setzt du beim Schleifendurchlauf auch nur den Wert von:

hbox1[] an Position 0. 

Entsprechend ist deine Array bis auf Eintrag 0 leer. Versuchst du nun per Schleife auf die anderen Einträge zuzugreifen, kommt es zur Exception:

for (int i2 = 0; i2 < 72; i2++) {
vbox1.getChildren().add(hbox1[i2]);
}

Um selbst diese Fehler zu finden solltest du folgendermaßen vorgehen:

Schritt 1: Du bekommst unten im Output, nachdem du eine Exception erhalten hast, einen Stacktrace, der dir sagt wo der Fehler aufgetreten ist.

Schritt 2: Du setzt einen Breakpoint auf diese Zeile. 

Schritt 3: Du startest deine Anwendung per Debug. - Der Code wird bis zu deiner aktuellen Zeile ausgeführt.

Schritt 4: Du überprüfst die Variablen und Methoden dieser Zeile, indem du die einzelnen Elemente markierst. Wobei dir das Element als Tooltip oder in einem Separaten Fenster angezeigt wird.

Schritt 5: Du hinterfrägst, was hinter der Exception stehen könnte: Nullpointer-Exception bedeutet, dass ein Element verwendet wird, dass keinen Wert hat (also noch NULL entspricht).

Schritt 6: Beim Überprüfen stellst du fest: In der Array hbox1[] ist nur ein Wert enthalten.

Schritt 7: Du überprüfst die Zeilen, in denen du

hbox1[]

Werte zuweist.

Schritt 8: Sofern es dir nicht auf Anhieb auffällt, setzt du an die Stelle ebenso einen Breakpoint.

Schritt 9: Du debugst erneut. Diesmal zum ersten Breakpoint und gehst per Einzelschritte durch und Vergleichst auch hier die Variablen, womit dir klar werden sollte, warum du nur einen Eintrag in deiner Array hast.

Schritt 10: Du besserst es aus und probierst deine Anwendung erneut.

Antwort bewerten Vielen Dank für Deine Bewertung

x1 und x2

sind reichlich sinnlos.

deine schleifen machen einen durchlauf.

in der ersten zählst du x1 bei 107 einmal hoch dann endet die schleife, und danach würdest du x1 sowieso wieder auf 0 setzten.

bei x2 läuft die schleife durch und endet deine bedingung 182 wird nie erreicht?

was du du denn da vor?

Antwort bewerten Vielen Dank für Deine Bewertung

Was bedeutet denn "funktioiniert nicht mehr"? Bekommst Du einen Fehler, wenn Du das Programm übersetzt oder zur Laufzeit - also während der Ausführung?

Syntaktisch sieht die Zeile ja korrekt aus.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Pokecrafter567
14.07.2016, 09:57

in zeile 34 bekomme ich einen null pointer

0

Was möchtest Du wissen?