Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sichtbarkeit von Variablen



anquijix
13-02-2008, 14:57
Guten Tag

Ich habe eine Klasse, und in dieser Klasse habe ich einen zweidimensionalen String deklariert und initialisiert.


String array = newString[300][3].

Dieser Array soll über die ganze Klasse hinweg sichtbar sein. Somit ist diese Initialisierung auch ganz oben in der Klasse ausserhalb jeglicher Methoden platziert.

Nun habe ich eine Methode in dieser Klasse erstellt, in welcher dieser Array mit Werten gefüllt werden soll.

Bei jedem Zugriff auf diese Methode erhalte ich eine NullPointer-Exception in der Zeile, wo ich den ersten Wert in den Array schreiben möchte.

Der Array selbst ist sichtbar in der Methode, weil sonst könnte ich gar nicht kompilieren. Jedoch scheint die Variable in der Methode selbst gar "nicht initialisiert" zu sein.
Wenn ich nun die Initialisierung in der Methode selbst vornehme, habe ich keinen NullPointer mehr, aber auch nicht mehr das, was ich eigentlich wollte. Diese Variable soll nicht jedes Mal neu initialisiert werden, da ich während der Laufzeit mehrere Werte zu unabhängigen Zeitpunkten reinschreiben möchte. Der Array ist als eine Art Zusammenfassung aller getanen Schritte zu betrachten.

Hier noch in Code-Form, um es zu verdeutlichen:



public class Klasse2 extends Klasse1 {

String[][] array = new String[300][3]
int index=0;


private void meineMethode(int zahl, String string1, String string2)
{
array[index][0] = String.valueOf(zahl);
array[index][1] = string1;
array[index][2] = string2;
index++;
}
private void andereMethode(){
int zahl = 234;
String string1 = "asdfs";
String string2 = "asdfal";
meineMethode(zahl,string1,string2);
}
}


In Prosa ausgedrückt: Ich habe diverse weitere Methoden, von denen aus ich auf meineMethode zugreife. Nach jedem Zugriff auf meineMethode wird der y-index des Arrays um 1 erhöht. Somit habe ich den gesamten Verlauf im Array gespeichert, zumindest theoretisch.

Der NullPointer passiert in der Zeile:

array[index][0] = String.valueOf(zahl);

Warum? Habe ich die Variable falsch definiert oder gar die Methode?

Hoffe, meine Problematik einigermassen verständlich beschrieben zu haben und bedanke mich im Voraus für allfällige Hinweise.

BLUESCREEN3D
13-02-2008, 16:38
Der NullPointer passiert in der Zeile:

array[index][0] String.valueOf(zahl);

Da fehlt ein =

anquijix
13-02-2008, 16:48
Oh danke:) Aber das ist es leider nicht. Ich habe den Code anonymisiert abgeschrieben und das = vergessen hier im Post..

mehlvogel
13-02-2008, 17:00
Wenn ich den Code so wie er dort steht ausführe erhalte ich keine NPE. Meine verwendete main Methode war die hier:



public static void main(String[] args) {
Klasse2 k2 = new Klasse2();
k2.meineMethode(1, "af", "dv");
k2.andereMethode();
k2.meineMethode(342,"sdfasd", "3efdasd");
}


Der Fehler scheint also ausserhalb dieses Konstrukts zu liegen.

anquijix
14-02-2008, 09:25
Problem solved:

Die Variable wurde in einer anderen Methode = null gesetzt statt new String[300][3]. Kein Wunder geht's nicht.

Soviel zum Thema "Bugs anderer beheben".

Danke für den Hinweis