Game of Life Implementierung

Klumpenmann

Mitglied
in dem folgenden Stück Code bekomme ich eine null Pointer Exception in der Zeile: this.currentGeneration[j] = new MyLifeForm(false);

also ist currentGeneration = null ??? Eigentlich will ich diese ja auch füllen. Aber naja vielleicht erkennt jemand hier ja einen Fehler, obwohl ich eher denke das der Fehler anderswo im Programm liegt... :bahnhof:

Java:
public boolean setPopulation(Population population) {
		
		this.popName = population.getDescription();
		
		this.currentGeneration = new MyLifeForm[this.currentUniverse.getNumberOfRows()]
		                                        [this.currentUniverse.getNumberOfColumns()];
		
		boolean[][]currentPop = population.getLifeFormMatrix();
		
		int popColumns = currentPop.length;
		int popRows = currentPop[0].length;
		
		int UniRows = this.getUniverse().getNumberOfRows();
		int UniColumns = this.getUniverse().getNumberOfColumns();
		boolean match = true;
		
		for (int i = 0; i<UniRows; i++){
			for (int j = 0; i<UniColumns; j++) {
				if (i < popRows 
						&& j < popColumns) {
					this.currentGeneration[i][j] = new MyLifeForm (currentPop [i][j]);
				} else {
					match = false;
					this.currentGeneration[i][j] = new MyLifeForm(false);
				    
				}
			}
		}
		
		
		return match;
	}
 
Zuletzt bearbeitet von einem Moderator:

remy

Aktives Mitglied
Habs mir mal angeguckt... beim nächsten Mal wäre es ganz nett, eine kurze Beschreibung dazuzulegen, wie das halbfertige Programm zu bedienen ist, damit man überhaupt zu diesem Fehler kommt.
Nachdem ich gut geraten (und im Code nachgeguckt) hab, tritt dieser Fehler wohl bei Spiel -> Start auf?!

currentGeneration ist tatsächlich null und wird erst gesetzt, wenn MyAbstractLifeRuntime.setBoard(...) aufgerufen wird. Das würde wahrscheinlich auch klappen, wenn vorher ein Spielbrett geladen wird, wo irgendwo eine Instanz des Interfaces "Universe" auch einen Wert für getBoard() zurückliefern würde. MyUniverse scheint wohl diese Instanz zu sein, die auch in dieser Hinsicht korrekt programmiert ist, aber es fehlt dann doch vielleicht in der Klasse MyLifeIO eine oder auch mehrere Zeilen, die das "Board" auch mit einer Instanz füllen.
Um es etwas einfacher zu sagen: die Klasse MyUniverse beinhaltet die Klassenvariable "Board", auf die letztendlich zurückgegriffen wird, um später currentGeneration die Instanz bzw. das Array zu übergeben. Die Klassenvariable "Board" bekommt aber nie eine Instanz und bleibt immer null (einziger Call bzw. einziges Setzen dieser Variable erfolgt im passenden Setter der gleichen Klasse, der Setter wird nie aufgerufen, Variable ist privat => bleibt immer null).
Die Lösung des Problems ist wohl, "Board" eine Instanz zuzuweisen. MyLifeIO setzt einiges in der Universe bzw. MyUniverse-Instanz, vielleicht kann man hier noch die passende Information aus der Datei laden? Oder wenn die Population geladen wird? Keine Ahnung, soweit habe ich dann doch noch nicht euren Code nachvollzogen.

Ich hoffe, ihr könnt was damit anfangen, ansonsten noch mal nachfragen ;)
 

Klumpenmann

Mitglied
Schonmal danke für die Antwort! Kann deinen Beitrag gerade noch nicht direkt nachvollziehen, weil ich auf der Arbeit bin und das Programm nicht vor mir habe.
Also bei mir ist es so das ich Spielbretter (boards) laden kann... wenn ich dann allerding eine Population laden will tritt der Fehler auf. Erst nach dem Laden des Spielbrettet und der Population würde man auf Start drücken um die nächste Generation zu erzeugen.
Also ist es kein Problem mit der Klassenvariable Board sondern nur mit dem laden von Populationen oder? Das liegt wohl auch nur daran das currentGeneration bzw die MyLifeForm Matrix = null ist... :bahnhof: Bin halt an dem Punkt angekommen wo ich echt keine Ahnung mehr habe wo der Fehler liegen könnte. Wäre cool wenn ihr hier noch paar Vorschläge hättet.
 

remy

Aktives Mitglied
Was soll currentGeneration denn enthalten? Das Problem liegt darin, dass dieser Variable in deinem Code keine Instanz zugewiesen wird und demnach immer null ist.
Bin ebenfalls noch auf der Arbeit, werde aber nachher (ca. 2 Stunden) noch mal das Problem nachvollziehen, wenn ich erst ein Board und dann die Population lade (wenn ich das jetzt richtig verstanden hab?).

Darf ich nebenher fragen, was das für ein Kurs ist? :)
 

Klumpenmann

Mitglied
Java Kurs in Informationsverarbeitung Bachelor Uni Köln.
In Zeile 21 im geposteten Stück Code wird doch currentGeneration eigentlich die übergebene Population übergeben,
dachte ich zumindest...
 

remy

Aktives Mitglied
Ah danke ;)
In dieser Zeile wird auf ein Feld in einem Array zugegriffen, dafür muss aber irgendwann vorher ein entsprechendes zweidimensionales Array initialisiert und zugewiesen worden sein.

Edit: hatte irgendwie überlesen gehabt, dass es sich um eine Array-Variable handelt. In Zeile 21 willst du tatsächlich eine Instanz der current-Variable zuweisen, das geht aber nicht, da das entsprechende Array dazu noch nicht initialisiert wurde.
 
Zuletzt bearbeitet:

remy

Aktives Mitglied
da geb ich dir recht :D sorry, hab da noch irgendeine andere Klasse im Kopf gehabt. Bevor ich noch mehr Unsinn quatsche, guck ich mir das gleich zu Hause noch mal an.
 

remy

Aktives Mitglied
So, habs noch mal getestet. Das Programm habe ich wie folgt bedient:

Application.main(...) gestartet. Datei -> Spielbrett laden -> weltall.gol ausgewählt (Hintergrund erscheint). Datei -> Population laden -> figures.golp ausgewählt.
Da bekomm ich zwar auch eine NPE, aber an einer anderen Stelle: LifePanel.setPopulation() in der ersten Zeile der Methode (Zeile 46 in der Klasse). newPopulation ist an dieser Stelle null.

Oder habe ich da wieder was falsch bedient?

(omg, doppelpost, sorry...)
 

Klumpenmann

Mitglied
Ja das heisst ja das die LifeFormMatrix = null ist und diese wird ja eigentlich in setPopulation befüllt. Also dein Problem ist genau das was ich habe Vollkommen richtig! Das laden einer Population klappt halt nicht. Verzweiflung pur! ;(
 

remy

Aktives Mitglied
Hilft es dir vielleicht weiter, dass Zeile 5 und 6 aus deinem Code-Beispiel des ersten Posts in der Klasse MyAbstractLifeRuntime gar nicht vorhanden sind? Da sind noch ein paar weitere Unterschiede... füge ich die Array-Initialisierung ein, bekomm ich immerhin einen anderen Fehler ;)
 

Klumpenmann

Mitglied
Hmm ja hatte ich wohl noch nicht in der geuploadeten Datei eingefügt, aber soweit war ich auch schon.
Ich hab langsam das gefühl ich müsste das alles nochmal von vorne programmieren, aber dazu fehlt mir die Zeit. Gibts hier den niemanden sonst der noch Rat weiss? Ich würd mich auch erkenntlich zeigen xD
 

remy

Aktives Mitglied
vielleicht würde es helfen, wenn du kurz beschreibst, was beim Laden der Population passiere soll. Habs mir grade mal auf der Arbeit geladen, deine aktualisierte Methode aus dem ersten Post reinkopiert und sehe, dass du noch mehr Veränderungen durchgeführt hast, zumindest sind wohl zwei Konstruktoren in der MyLifeForm-Klasse hinzugekommen.
Wenn du hier die Änderungen posten würdest, könnte man den Fehler vielleicht eher nachvollziehen, immerhin scheint es jetzt auch ein anderer zu sein.
 

Andi_CH

Top Contributor

Andi_CH

Top Contributor
Sooo blond bin nicht mal ich ;-) - nach 75 Sekunden kam die Aufforderung etwas hochzuladen oder sich einzuloggen - reproduzierbar - bis ich auf die schräge Idee kam den popupblocker auszuschalten - dann gehts.
 

Andi_CH

Top Contributor
Problem Nr1: LifePanel - setPopulation wird mit null aufgerufen wenn man eine random Population erzeugen will...

Aufruf erfolgt aus dem LifeFrame setNextGeneration .. aber da kannst du ja selbst suchen auf jeden Fall ist das nicht instanziert.

Und das Panel verhält sich auch mehr als seltsam wenn es noch leer ist - fahr mal mit der Maus darüber ;-)
 
Zuletzt bearbeitet:

remy

Aktives Mitglied
Fehler gefunden - wie so oft einfach nur trivial. Du wolltest dich erkenntlich zeigen, was bekomm ich denn? :D

naja, ich will mal nicht so sein... Zeile 118, die zweite for-schleife. In der Bedingung sollte ein j und nicht ein i stehen, dann läuft immerhin das Laden der Populationen ;)

Bekomm ich ein Geschenk oder willst du mir was überweisen? Dann schick ich dir entweder meine Adresse, Kontoverbindung oder auch Paypal-Adresse :p

Edit: nächster Fehler: in der Bedingung
[Java]if (i < popColumns && j < popRows ) {[/Java]
haben popColumns und popRows den Platz getauscht, damit sollte es auch nicht nur für die erste Population in der Liste klappen ;)
 
Zuletzt bearbeitet:

Klumpenmann

Mitglied
Oh Mann! und ich dachte ich hätte das noch kontrolliert... -.-
Naja aufjedenfall geil... ich kann Populationen laden...
Jetzt kommt aber direkt die nächste Exception wenn man die nächste Generation erzeugen will... Muss ich halt mal schauen.

Mich armen Studenten willst du ausnehmen? xD Erstmal schauen ob ich das Programm komplett zum laufen kriege dann lässt sich über sowas nochmal reden ^^
 

remy

Aktives Mitglied
ich bin selber Student und weiß wie das ist ;) war ja auch nur Spaß...

da ich noch nicht so hinter die Bedienung (vom Sinn ganz zu schweigen) deines Programm hintergekommen bin: was muss ich wie klicken, um zu deiner Exception zu kommen?
 

Klumpenmann

Mitglied
Also am besten spielbrett laden... weltraum.... pop laden.... gun .... und dann auf Spiel -> Nächste Generation....

Hat wohl irgendwas damit das die lifeForm null ist... also auch copy und ebenso currentGeneration wieder null?.... irgendwie sowas....
 

remy

Aktives Mitglied
Hi,

das hat was mit folgender Methode in der Klasse "MyLifeForm" zu tun:
[Java]public LifeForm createCopy() {
return null;
}[/Java]

Ich kann wieder nur raten, aber: hier sollte vielleicht eine Kopie der Instanz zurückgegeben werden und nicht null ;)
 

Klumpenmann

Mitglied
Immerdoch gerne... am Ende muss ich dir man ganzes erspartes geben xD.
Bin gerade erstmal damit beschäftigt die Dokumentation zu schreiben.... das muss ich bis morgen 12 alles abgeben deswegen leg ich damit gerade schonmal los... ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Game of Life Nachbarn zählen Java Basics - Anfänger-Themen 20
P Moore Nachbarschaft-Game of Life Java Basics - Anfänger-Themen 1
L Conways Game of Life Java Basics - Anfänger-Themen 4
J Game of life Java Basics - Anfänger-Themen 3
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
B Wer kennt einen Link für vollständiges, leichtverständliches "Game of Life"? Java Basics - Anfänger-Themen 1
C Game of life Java Basics - Anfänger-Themen 14
P Game of Life Java Basics - Anfänger-Themen 18
C Conways Game of Life / "Waldbrandsimulation": wieso temporäres Hilfs-Array?! Java Basics - Anfänger-Themen 8
D Game of Life - Nachbarn zählen Java Basics - Anfänger-Themen 8
Developer_X Game of Life Java Basics - Anfänger-Themen 10
L Game of life in einem FensterVisualisieren Java Basics - Anfänger-Themen 2
D Game of Life Java Basics - Anfänger-Themen 14
L Wizzard-Game Java Basics - Anfänger-Themen 3
Jxhnny.lpz bouncing Ball (Brick-Breaker-Game) Java Basics - Anfänger-Themen 1
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
P 2D Game Java Basics - Anfänger-Themen 6
B Verwirrender Game Loop Java Basics - Anfänger-Themen 6
B "Snake"-Game verbuggt Java Basics - Anfänger-Themen 0
K Game of live Java Basics - Anfänger-Themen 4
F Java Collectors Game Hilfe Java Basics - Anfänger-Themen 4
C Wie kann ich jetzt von der Game.java auf die Timer.java zugreifen? Java Basics - Anfänger-Themen 6
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
K Gutes Java 3D Game Tutorial gesucht Java Basics - Anfänger-Themen 6
Java-Insel Game-Konzept Java Basics - Anfänger-Themen 10
G Game Loop Problem Java Basics - Anfänger-Themen 9
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
V Start ins Java Game Development Java Basics - Anfänger-Themen 22
I Programm Game & AR Java Basics - Anfänger-Themen 13
T Anagram Game - warum ist es auf 2 Packages aufgeteilt? Java Basics - Anfänger-Themen 3
S 3d-game java3d/eigene API Java Basics - Anfänger-Themen 4
C Pong Game Java Basics - Anfänger-Themen 2
H What is the Life Cycle of an Object Created Within/Outside of a Servlet? Will that item be destroyed after the session ends? Java Basics - Anfänger-Themen 1
B Erste Schritte Way of life ohne import - Habe Beispiel, macht Unfug Java Basics - Anfänger-Themen 21
ruutaiokwu JRE-/JDK-unabhängige PBKDF2WithHmacSHA512-Implementierung Java Basics - Anfänger-Themen 16
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
J Implementierung gcd();square() Java Basics - Anfänger-Themen 98
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
G Projekt architektur (implementierung) Java Basics - Anfänger-Themen 3
M Implementierung einer getNextId Methode Java Basics - Anfänger-Themen 5
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
J Implementierung eines Zustandsdiagramms Java Basics - Anfänger-Themen 19
I GenericQueue / Implementierung als Ringspeicher Java Basics - Anfänger-Themen 4
MiMa Log4j2 implementierung Java Basics - Anfänger-Themen 4
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
G Array implementierung Java Basics - Anfänger-Themen 23
J ANTLR Installierung und Implementierung Java Basics - Anfänger-Themen 2
E Hilfe bei Implementierung von Methoden Java Basics - Anfänger-Themen 10
S SkipList Implementierung Java Basics - Anfänger-Themen 1
J Methoden Suche effiziente Implementierung für eine Methode Java Basics - Anfänger-Themen 3
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
E hashCode implementierung Java Basics - Anfänger-Themen 9
S Implementierung der Klasse Konto und Nutzung bereits vorhandener Klassen Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
O Generics - Implementierung Java Basics - Anfänger-Themen 7
A Hilfestellung zur Implementierung des Gaußsches Eliminationsverfahren Java Basics - Anfänger-Themen 4
B OOP Implementierung eines Heaps Java Basics - Anfänger-Themen 13
K Bucketsort Implementierung Java Basics - Anfänger-Themen 0
K Mergesort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
K Quicksort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
S Klassen Klassendiagramm Implementierung? Java Basics - Anfänger-Themen 5
J Bucketsort Implementierung Java Basics - Anfänger-Themen 0
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
T Collections LinkedList<LinkedList<T>> - Implementierung Java Basics - Anfänger-Themen 10
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
D Resourcebundle implementierung Java Basics - Anfänger-Themen 2
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
Q Implementierung von Listenern Java Basics - Anfänger-Themen 4
B Klassen Hilfe bei Implementierung Java Basics - Anfänger-Themen 5
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
I Erste Schritte Implementierung der API Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
M falsche implementierung von currentTimeMillis() ? Java Basics - Anfänger-Themen 14
G Implementierung eines Kontos Java Basics - Anfänger-Themen 11
M Quicksort implementierung Java Basics - Anfänger-Themen 23
SexyPenny90 Implementierung einer doubly linked list Java Basics - Anfänger-Themen 5
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
K Kleiner Fehler bei Methoden Implementierung Java Basics - Anfänger-Themen 6
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
S OOP Implementierung Komposition, Aggregation, Assoziation und Generalisierung Java Basics - Anfänger-Themen 2
C Klassenhirarchien zur Implementierung von Fahrzegen Java Basics - Anfänger-Themen 26
BinaryLogic Datentypen Statistik Interface - untersch. Implementierung Java Basics - Anfänger-Themen 5
E Performante Implementierung eines "Hintergrundprogramms" Java Basics - Anfänger-Themen 10
S Saubere Implementierung Java Basics - Anfänger-Themen 2
K Dijkstra implementierung 2.0 Java Basics - Anfänger-Themen 19
K dijskral implementierung Java Basics - Anfänger-Themen 14
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
B OOP Problem bei Implementierung von Interface Java Basics - Anfänger-Themen 6
J HashSet Implementierung Java Basics - Anfänger-Themen 16
R NullPointerException in Queue-Implementierung Java Basics - Anfänger-Themen 11
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
B Effektive Implementierung für Darstellung großer Datenmengen in Jogl Java Basics - Anfänger-Themen 5
D Datentypen Implementierung eines Binärbaumes Java Basics - Anfänger-Themen 7
B Implementierung Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben