[Java] NullPointerException bei String-Vergleich

hasch

Lt. Commander
Registriert
Sep. 2004
Beiträge
1.067
Hallo zusammen,
muss für die Uni ein kleines Programm schreiben, dass aus der Infix- die Postfixnotation macht und diesen Term berechnet, dabei stehe ich aber gerade beim Problem der NullPointerException fest, da mein übergebener String "operator" eine Exception auswirft, hier der kleine Teil des Code:
Code:
private int operatorRank(String operator) {
        System.out.println("*".compareTo(operator));

        return 0;
    }

Hier mal einfach nur eine Ausgabe, um das Problem auf das einfachste zu reduzieren. Hat jemand eine Idee, woran dies liegen könnte?

Gesamtcode liegt dem Thread an. :)
 

Anhänge

Hallöle!

Muss zugeben, ich bin jetzt nicht so tief eingestiegen, aber:

Der erste Aufruf von
Code:
int topStackRank = this.operatorRank(this.top());

Verursacht den Fehler, weil top() NULL zurückliefert, weil der isEmpty() true ist.

Du hast ja bewusst oder unbewusst in der Anweisung
Code:
 "*".compareto(..)
die Variable übergeben und die compareTo Methode der Konstanten aufgerufen. Bei Verwendung von equals() hilft das wirkungsvoll Nullpointerexceptions zu verhindern, bei compareTo aber leider nicht.

Mein RAD sagt zu compareTo übrigens:

Löst aus:
NullPointerException when string is null

finde das jetzt grade in der Sun Doku nicht, ist ja aber eindrucksvoll bewiesen worden.

Warum überhaupt ein compareTo() auf ==1?
 
Tatsache, danke, das ändern in folgendes:
Code:
int topStackRank = (this.top() == null) ? 1 : this.operatorRank(this.top());
konnte mir das ganze dann ersparen :)

compareTo() == 1 war natürlich falsch, da muss statt der 1 ne 0 hin, da sie ja nur dann gleich sind, danke für den Hinweis.
 
Zurück
Oben