NPE init in Iterator GP 11.3

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

NPE init in Iterator GP 11.3
Hallo zusammen!
Ich hatte eigentlich meinen code fertig zum abgeben. Die public tests waren alle grün, jedoch als ich es ins EST hochgeladen habe, gibt mit der Status ein rotes X und sagt nicht kompilierbar, da NPE in “”. An den public Tests hab ich nichts verändert, also daran kann es nicht liegen. Hat jemand ne Idee dazu?
Muss man überprüfen ob der Baum regulär aufgestellt ist? Also ob alle RBNodes ein value haben? Hier würde es ja beispielsweiße eine NPE geben. Der Fall sollte aber eigentlich nie auftreten… ich bin jedenfalls ratlos!

Danke schon mal!


Du scheinst im Konstruktor des Iterators eine Nullpointerexception auszulösen. Rotes X heißt ja eigentlich nur, das ein Test fehlgeschlagen ist aber nicht, dass es nicht kompiliert bzw. würde es auch trotz NullPointerException compilieren.


Also kann ich es - auch wenn ich den Fehler so nicht mehr finde - so abgeben? Und bekomme dann zumindest ein paar Punkte?
Kontrolliert das EST nicht eigentlich nur die PublicTests? Die sind ja in meinem Fall eigentlich grün.


Nein, du kannst es so nicht abgeben, den das EST hat ein Problem damit…

Du kannst mal deinen Konstruktor hier reinstellen(Nur den!!!).

Übrigens: Array-Initiierungen können auch eine sein…

Evtl. liegt das Problem aber in einer deiner Methoden und wird indirekt ausgelößt…

Außerdem: Kannst du evtl. die genaue Fehlermeldung hier reinstellen?


Die Fehlermeldung lautet: Submitted files don’t compile with test case. Cause: Forbidden: - java.lang.NullPointerException.“”

private RedBlackNode<E> wanderer1;
			
			private Iterator<E> init() {
				wanderer1 = root;
				
				while (wanderer1 != null && wanderer1.left != null) {
					wanderer1 = wanderer1.left;
				}
				
				return this;
			}

1.) Komischer Variablenname

2.) Wo genau kommt den die Methdoe vor? für RedBlackTree ist ja niregndwo eine Methode Init verlangt…Vielleicht verursacht das den fehler

3.) in der Fehlermeldung steht nichts von Iterator

4.) Die -Methode ist nicht deine init()-methode, sondern ein Konstruktor. Siehe https://stackoverflow.com/questions/20407026/what-is-an-init-method-in-java-can-it-be-overridden


Ah, und:

5.) Die EST-Fehlermeldungen sind recht nichtssagen…Kann auch sein, dass das “” nichts, was für dich wichtig wäre, ist, sondern einfach nur irgendwo eine Nullpoiterexception beim compilen auftaucht, was übrigens merkwürdig ist, da die ja meistens zur Laufzeit auftauchen…


Zu 1. Kommt davon wenn man Game of Thrones gerade nochmal schaut :wink:
Zu 2. 3. & 4. Die Methode kommt im Iterator vor zur Initialisierung. Kann/soll man auch so machen laut Tutoren.


Im Iterator sollte es gehen…Dann wird die vermutlich auch nur dort lokal aufgerufen.

Das beantwortet allerdings nicht 4.)

Noch dazu würde ich der Fehlermeldung des EST keinerlei Bedeutung schenken, sondern selber suchen, den die EST-Fehlermeldung klingt nicht wirklich hilfreich…


Falls du irgendwo in deinem Code throw new NullPointerException() stehen hast (z.B. in add), lösch es raus. NullPointerException gehört bei dieser Aufgabe zu den verbotenen Klassen der Java API

2 „Gefällt mir“

hatte auch diese Fehlermeldung im EST. Lustigerweise konnte er dann auf einmal kompilieren als ich in der add() Methode die zu werfende NullPointerException aus dem Methodenrumpf entfernt, und diese anschließend in die Signatur gepackt hab.


Das ist ein Fehler in der Aufgabenstellung. Dort wird die NPE verboten, in der API Beschreibung allerdings erfordert.


Kein Fehler in der Aufgabenstellung! Die Nullpointerexception lässt sich auch anders werfen…