Nullpointer Exception

Helldevil

Mitglied
Hallo leute, ich bekomme bei folgendem Code immer ne Nullpointer Exception und weiss nicht warum
Java:
import de.htw.saarland.stl.Stdin;
import java.io.*;
/**
 * Interaktives Testprogramm fuer DlistSorted und ArrayStack
 * @author Christian Geers,Markus Hubig
 * @version 0.2
 *  
 */

public class TestDialog {

    // Konstanten um eingelesene Funktionen entsprechend darstellen zu koennen
    private static final int PROGRAMM_AUSFUEHREN                  = 1 ;
    private static final int PROGRAMM_ENDE                        = 0 ;
    private static final char ADD = '+';
    private static final char REM = '-';

    private String dateiName;
    private File   datei;

    private DlistSorted testListe;
    
    
    /** Hauptschleife des Programms Dialog
     * Solange nicht PROGRAMM_ENDE gewaehlt wird, wird eine Funktion mit einlesenFunktion() eingelesen
     * sonstige auftretende Exceptions werden abgefangen und ausgegeben
     */

    public void start () {
                
        int funktion = -1;
        while (funktion != PROGRAMM_ENDE) {
            try {
                funktion = einlesenFunktion();
                ausfuehrenFunktion(funktion);
                
            }
            catch (AssertionError e) 
            {
                System.out.println ( "Ein Fehler ist aufgetreten !\n" + e );
            }
            catch (NumberFormatException e) 
            {
                System.out.println("Fehler: Ihre Eingabe hat nicht das richtige Format");
            }

            catch (Exception e) 
            {
                System.out.println("Fehler: " + e);
                e.printStackTrace();
            }
        }
    }

    /** Ausgabe des Menues und einlesen der Funktion.
     * 
     * @return eingelesene Funktion als ganzzahlige Zahl
     */

    private int einlesenFunktion() 
    {
        System.out.print  (
            PROGRAMM_AUSFUEHREN              + ": Programm ausfuehren\n"+
            PROGRAMM_ENDE                    + ": Programmende -> " ) ;

        return Stdin.readlnInt();
    }

    private void ausfuehrenFunktion(int funktion) 
    throws IOException, DateiNichtVorhandenException, DateiKannNichtGelesenWerdenException, DateiLeerException

    {   
        if (funktion == PROGRAMM_AUSFUEHREN)
        {
            String dateiName;
            dateiName = Stdin.readlnString(" Bitte geben Sie einen Dateinamen ein : ");
            System.out.println("Der zu bearbeitende Dateiname lautet" + dateiName);
                     
            LineNumberReader read = new LineNumberReader(new FileReader(datei)); 

            String line;

            while ( (line = read.readLine()) != null )
            {
                System.out.println( "\nBearbeitete Zeile : " + read.getLineNumber() );
                try
                {
                    if (line.trim().length() != 0)
                    {
                        switch (line.charAt( 0 ))
                        {
                            case ADD : testListe.add( line.substring(1));
                            break;
                            case REM : testListe.remove( line.substring(1));
                            break;
                            default  : throw new ZeilenException ( "Die Zeile : " +  read.getLineNumber() +","+ line + "konnte nicht bearbeitet werden" +" es konnte weder +  noch - gefunden werden" 
                            );
                        }
                    }
                    else
                    {
                        throw new ZeilenException( "Die Zeile : " +  read.getLineNumber() + "wird nicht gelesen weil sie leer ist"
                        );  
                    }
                }

                catch ( Exception e )
                {
                    System.out.println( "Es ist ein Fehler aufgetreten" + e + "Ort des Fehlers:");
                    e.printStackTrace();

                }
                System.out.println(testListe);
            }
            

    
        }
        else if (funktion == PROGRAMM_ENDE) 
        {
            System.out.println ( "Programmende" );
        }

        else 
        {
            System.out.println (" Falsche Funktion " );
        }
    }

    /** Main-Methode zum Erzeugen des TestDialog Objektes und zum Starten des Testprogramms
     *
     */
    public static void main (String[] args) throws Exception
    {

        TestDialog d = new TestDialog();
        d.start();
    } 
}

Ich wäre für jede Hilfe Dankbar

Gruss
Christian
 
Zuletzt bearbeitet:
So wie ich das selbst sehe, gehts um die variable dateiName, aber wie bekomm ich es hin, dass das Programm die Datei einliest und verarbeitet ,ohne die Nullpointer Exception, das ist mir momentan etwas schleierhaft...
 
@Helldevil

Das ist weder ein StackTrace noch eine Zeilennummer.
Soweit ich sehe setzt du nirgends die File-Instanz (laut Firefox-Suche ^^), kann mich aber auch irren.

btw. DateiNichtVorhandenException, DateiKannNichtGelesenWerdenException, DateiLeerException? Reichen dir FileNotFoundException, IOException und EOFException nicht?
 
java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:134)
at java.io.FileReader.<init>(FileReader.java:72)
at TestDialog.ausfuehrenFunktion(TestDialog.java:79)
at TestDialog.start(TestDialog.java:35)
at TestDialog.main(TestDialog.java:137)
at __SHELL0.run(__SHELL0.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at bluej.runtime.ExecServer$3.run(ExecServer.java:724)


Das ist die Fehlermeldung die Bluej auswirft..
 
@Helldevil

Das ist weder ein StackTrace noch eine Zeilennummer.
Soweit ich sehe setzt du nirgends die File-Instanz (laut Firefox-Suche ^^), kann mich aber auch irren.

btw. DateiNichtVorhandenException, DateiKannNichtGelesenWerdenException, DateiLeerException? Reichen dir FileNotFoundException, IOException und EOFException nicht?


Nee die verlangen eigene Exceptions bei uns im Studium
 
Hallo nochmal, danke für eure Mühe, habe die Fehler gefunden, was jetzt noch ansteht sind Schönheitsreparaturen.

Zu den Fehlern, ich habe an einer Stelle "datei" statt dateiName verwendet, nachdem ich das geaendert hatte war der Fehler weg, ein anderer Fehler war, dass ich keine leere Liste initialisiert hatte und dadurch keine Elemente einer eingelesenen Datei in eine Liste eingetragen werden konnten.


Naja jetzt laeufts...

Danke nochmal
 

Neue Themen


Zurück
Oben