Java Problem NPE?

2 Antworten

Wie Gastnr007 schon geschrieben hat, Du musst das Objekt initialisieren ansonsten erhälst Du bei einem Methodenaufruf von eben diesem eine NPE (NullPointerException). NPE bedeutet immer, dass eine Variable auf null steht und Du versuchst darauf eine Methode aufzurufen.

Also einfach mit einer leeren Liste initalisieren.

private List<String>EnglischeBedeutung = new ArrayList<String>();

Davon ab, auch da doch noch ganz am Anfang stehst: Variablen und Attribute werden klein geschrieben (englischeBedeutung). Machst Du teilweise ja auch schon.

Ich könnte mir auch vorstellen, dass Du statt Listen Maps benutzt, dann hast Du die Verknüpfung zwischen Deutsch und Englisch.

Map<String, String> translation = new HashMap<String, String>();

So könntest Du dann englische Übersetzungen hinzufügen:

translation.put("deutsch", "englisch");

Und so würdest Du sie wieder abrufen:

String englischTranslation = translation.get("deutsch");

"deutsch" und "englisch" sind hier nur Platzhalter-Strings und können durch deine entsprechenden Variablen ersetzt werden.

Ansonsten wäre es wahrscheinlich sinnvoller, abhängig von deinem Lernfortschritt und dem Umgang mit objektorientierter Programmierung, die Übersetzung und den Ursprungstext in einem Objekt zu vereinen.

Zum Beispiel:

public class Translation {

    private final String german;

    private final String english;

    public Translation(String german, String english) {
        this.german=german;
        this.english=english;
    }

    public String getGerman() {
        return this.german;
    }

    public String getEnglish(){
        return this.english;
    }

}

Du würdest Objekte dieser Klasse dann einfach in einer Liste speichern:

List<Translation> translations = new LinkedList<Translation>();

Hat den großen Vorteil, dass eine Translation den deutschen und englischen Begriff kapselt und diese untrennbar verbindet.

Abhängig von deinem Arbeitseifer kannst Du dir noch Gedanken machen wie man verschiedene Sprachen unterstützt und sich nicht nur auf Deutsch und English fixiert, aber das geht evtl. schon über deinen Rahmen hinaus.

Gruß

Deine EnglischeBedeutung bleibt doch immer null, da du sie nie initialisierst:

setze am Anfang ein EnglischeBedeutung = new ArrayList<>(); hin. (oder LinkedList)