OOP Wörterbuch NullPointerException

torblerone

Mitglied
Hallo liebe Java-Forum Gemeinde,
ich lerne gerade für die erste Klausur und übe mich im Programmieren, hänge jetzt aber an einem Fehler den ich nicht ausgebügelt bekomme.

Aufgabe ist hier, Eine Klasse zu entwerfen die ein Wörterbuch als Objekt erzeugt und zwei Methoden hat: insert(key, value) zum Einfügen von dem Wort und seiner Übersetzung sowie lookup(key) zum "Nachschlagen" des Wortes.

Hier erstmal mein Code:

Java:
public class Dictionary {

    int groesse, nextPos;
    String [] [] dic;


    public Dictionary(int i){
        groesse = i;
        String [] [] dic = new String [groesse] [2];
        nextPos = 0;
    } // Konstruktor

    void insert (String key, String value) {
        if(nextPos+1 <= dic.length){
        dic[nextPos][0] = key;
        dic[nextPos][1] = value;
        nextPos++;
        System.out.println(key + " und " + value + " wurden eingetragen.");
        } else {
            System.out.println("Dictionary ist voll!");
        }
    } // insert
   
   
    public String lookup (String key) {
        for(int n=0; n<(dic.length-1); n++){
            if(key == dic[n][0]){
                return dic[n][1];
            }
        }
        System.out.println(key + " wurde nicht gefunden.");
        return "";
   
    } // lookup
   
} // Dictionary

Und die dazugehörige Klasse die das Objekt erzeugen soll:

Java:
public class DicTest {

    public static void main (String [] args) {
       
        Dictionary de_eng = new Dictionary(10);
       
        de_eng.insert("Hallo", "Hello");
        de_eng.insert("wollen", "want");
       
        de_eng.lookup("Hallo");
       
    } // main

} // DicTest

Kompilieren lassen sich beide Programme, wenn ich DicTest jedoch ausführen will wirft mir javac allerdings die Meldung um die Ohren:

D:\Java>java DicTest
Exception in thread "main" java.lang.NullPointerException
at Dictionary.insert(Dictionary.java:14)
at DicTest.main(DicTest.java:7)

Da ich in der OOP noch relativ frisch bin weiß ich nicht genau was ich damit anfangen soll, ich vermute dass das Objekt nicht mehr auf das im Konstruktor erzeugte Array zugreifen kann, beschwören würde ich es aber nicht.

Weiß da jemand weiter?
Danke im Voraus und Grüße,
torblerone
 
Du hast die globale Variable dic die nie initialisiert wird.
In deinem Konstruktor erstellst du eine neue, lokale dic Variable und initialisierst diese, du willst aber deine global Variable initialisieren.
 
Du hast die globale Variable dic die nie initialisiert wird.
In deinem Konstruktor erstellst du eine neue, lokale dic Variable und initialisierst diese, du willst aber deine global Variable initialisieren.

Java:
public class Dictionary {

    int groesse, nextPos;
    String [] [] dic;


    public Dictionary(int i){
        groesse = i;
        dic = new String [groesse] [2];
        nextPos = 0;
    } // Konstruktor


[. . .]

} // Dictionary

So in etwa dann? Es funktioniert zwar, aber verwende ich hiermit im Konstruktor das globale dic?
 
Vielen vielen Dank für die schnelle Hilfestellung, ich finde das besser wenn man nicht direkt zugeschnittenen Code bekommt sondern nochmal kurz nachdenken muss 🙂
 

Zurück
Oben