java.lang.NullPointerException

MopsdeBops

Grünschnabel
Morgen miteinander.

Ich bin gerade an einem kleineren Projekt. Es geht kurz gesagt darum aktive Netzwerkkomponenten zu verwalten (Programm dient nur zur Übung).

Nun habe ich aber das Problem dass ich, wenn ich mit einem Bufferedreader die Index-Datei darauf überprüfen will, ob der Eintrag schon existiert, mit eine java.lang.NullPointerException ausgibt. Vieleicht weiss ja einer von euch einen Rat für mich.

PHP:
    private void Existalrdy (int nr1){
        switch (nr) {
            case 1: temp_nr = eing_Id1.getText();
            case 4: temp_nr = eing_Id4.getText();
            default:
        }
        BufferedReader	f;
		String			line;
        String          file="id_index.dat";
        String          path = "C:/temp/NetAdmin/data/"+file;

		try {
			f = new BufferedReader(
				new FileReader(path));

			while ((line = f.readLine()) != null) {
				if (line.contains(temp_nr)) { //Hier tritt vermutlich der Fehler auf
                    System.out.print(line);
                    fehler = "ID bereits vorhanden, bitte zuerst löschen";
                    alrdy = 1;
                }
			}
            if (alrdy == 1) {
                exist = 1;
            } else {
                exist = 0;
            }
			f.close();
		} catch (Exception e) {
			System.err.println(e.toString());
		}
    }

Gruss
 
Ja, wo sonst :-D

1. In deiner Switch Anweisung fällen die break;
Dadurch wird selbst wenn nr 1 ist, von der case 4 Variante überschrieben.

2. Da liegt wahrscheinlich auch der Fehler. Wenn nr weder 1 noch 4 ist wird temp_nr nichts zugewiesen und ist somit null.

3. solltest du deine Reader in einem finally schließen (close Methode)
 
Zuletzt bearbeitet:
Moin zusammen,

was mir noch so auf die Schnelle aufgefallen ist:

(a) übergeben wird eine Variable "nrl", der switch läuft dann aber schon nur über "nr"! Wo kommt die denn her "nrl" wird scheinbar gar nicht verwendet! Somit dürften eigentlich weder case-1 noch case-4 jemals in Betracht kommen .....
(b) Ergänzung zu Anime-Otaku: aus diesen Gründen gibt es auch den DEFAULT-Fall! ! ! Hier sollte auf jeden Fall immer ein Wert für temp_nr gesetzt werden! Wo ist denn temp_nr überhaupt deklariert? ? ? Ist das 'ne String-Variable? ? ?

Gruß
Klaus
 
So habs nun testen können (bei uns inner Firma ist gerade der Mail Server abgekratz darum musste ich mich gerade darum kümmern). Das Problem waren wohl die "break;" und "nr", war wohl gestern eindeutig zu lang mit dem Programm beschäftigt und hab dann bei der Funktion wohl n bisschen gepfuscht. Danke für eure rashe Hilfe.

noch zu vfl_freak: temp_nr wird in der übergeordneten Klasse deklariert, da ich es nicht nur in dieser Funktion gebrauche.

Überprüfung funktioniert nun ohne Probleme. Thx

Gruss
 
Schön, dass es nun klappt!
Würde trotzdem vorsorglich den DEFAULT-case nutzen für den Fall, dass temp_nr im der übergeordneten Fkt. nicht oder nicht richtig gesetzt ist, da Du sonst vermutlich die gleichen Probleme bekommst!

tschüss
Klaus
 
Zurück