Reference - wird gegen meinen Willen - auf null gesetzt

cheh

Mitglied
Hey Leute,
zu aller erst, ich hoffe ich bin in der richtigen Kathegorie, falls nicht, bitte verschieben !

Also zu meinem Problem :
ich versuche gerade Conways Spiel des Lebens in Java umzusetzt (einfach so zur Übung ).
ein einer Klasse erzeuge ich eine ArrayList<ArrayList<Boolean>>, um eine 2Dimensionale ArrayList zu haben.
So weit funktioniert es auch noch.
Später möchte ich dann auf diese ArrayList zugreifen, sie hat aber den Wert null (und das, obwohl ich sie im constructor erzeugt und ihr Werte zugewiesen habe)

Ich verstehe nicht warum. Könntet Ihr mir helfen, den Fehler zu suchen ?
Der erste Teil, zum Erstellen der Oberfläche :
[Java]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class oberflaeche {
JFrame frm;
Zeichen rst ;
spieldeslebens sdl ;



public class Zeichen extends JPanel {

private ArrayList<ArrayList<Color>> farben;
private int anzahl_breite;
private int anzahl_hoehe;
private int abstand = 10;

public Zeichen(int breite, int hoehe, ArrayList<ArrayList<Color>> farben) {
anzahl_breite = breite;
anzahl_hoehe = hoehe;
this.farben = farben;

}

public void setFarben(ArrayList<ArrayList<Color>> farben) {
this.farben = farben;
}

public void replaceColor(int x, int y, Color newcolor) {
y--;
x--;
ArrayList<Color> zwiarr = farben.get(x);
zwiarr.set(y, newcolor);
farben.set(x, zwiarr);
}

public void paintComponent(Graphics g) {
int h = getSize().height;
int b = getSize().width;

int optimale_breite = Math.round((b - (anzahl_breite * abstand))
/ anzahl_breite);
int optimale_hoehe = Math.round((h - (anzahl_hoehe * abstand))
/ anzahl_hoehe);
// System.out.println("" + h + "|" + b + "|" + optimale_breite);
for (int i = 0; i < anzahl_breite; i++) {
int posX = (optimale_breite * i + abstand * i);
for (int j = 0; j < anzahl_hoehe; j++) {
int posY = (optimale_hoehe * j + abstand * j);
// System.out.println(""+posX);
g.setColor(farben.get(i).get(j));
g.fillRect(posX, posY, optimale_breite, optimale_hoehe);
}
}
}
}
public class naechsteRundeKlick implements ActionListener {

@Override
public void actionPerformed(ActionEvent arg0) {
rst.setFarben(sdl.eineRunde());
rst.repaint();

}

}

static public void main(String arg[]) {
oberflaeche of = new oberflaeche();
of.zeichnen();
}

public void zeichnen() {
int breite = 10 ;
int hoehe = 10 ;
frm = new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(500, 500);
Button btn = new Button("eine Runde weiter");
btn.addActionListener(new naechsteRundeKlick());
sdl = new spieldeslebens(breite, hoehe);
/* sdl.replaceZelle(2, 2, true);
sdl.replaceZelle(2, 3, true);
sdl.replaceZelle(2, 4, true);
sdl.replaceZelle(1, 2, true);
sdl.replaceZelle(3, 2, true);
sdl.replaceZelle(4, 4, true);
sdl.replaceZelle(4, 5, true);*/
rst = new Zeichen(breite, hoehe, sdl.returnColorArray());
frm.add(BorderLayout.EAST,btn);
frm.add(BorderLayout.CENTER, rst);
frm.setVisible(true);
}

}
[/Java]

Der Zweite Teil mit dem Objekt, dass über das Leben und Sterben der Zelle wacht :
[Java]
import java.awt.*;
import java.util.*;

public class spieldeslebens {
private ArrayList<ArrayList<Boolean>> zellen;
private int breite;
private int hoehe;

public spieldeslebens(int breite, int hoehe) {
this.breite = breite;
this.hoehe = hoehe;
ArrayList<ArrayList<Boolean>> zellen = new ArrayList<ArrayList<Boolean>>();
for (int i = 0; i < hoehe; i++) {
ArrayList<Boolean> zwiar = new ArrayList<Boolean>();
for (int j = 0; j < breite; j++) {
zwiar.add(false);
}
zellen.add(zwiar);
}
System.out.println(zellen.toString()); // hier hat zelle noch Werte .. ( also ist : zelle != null)
System.out.println(""+zellen.size() + "|" + zellen.get(3).size());
}

public spieldeslebens(int breite, int hoehe,
ArrayList<ArrayList<Boolean>> zellen) {
this.breite = breite;
this.hoehe = hoehe;
this.zellen = zellen;
}

public void replaceZelle(int x, int y, boolean neuerwert) {
y--;
x--;
ArrayList<Boolean> zwiarr = zellen.get(x);
zwiarr.set(y, neuerwert);
zellen.set(x, zwiarr);
}
public ArrayList<ArrayList<Color>> returnColorArray(){
ArrayList<ArrayList<Color>> result = new ArrayList<ArrayList<Color>>();
for (ArrayList<Boolean> i : zellen) { // Hier ist Zelle = null => Fehlermeldung
ArrayList<Color> zwifararr = new ArrayList<Color>();
for (Boolean boo : i) {
if (boo) {
zwifararr.add(Color.blue);
} else {
zwifararr.add(Color.black);
}
}
result.add(zwifararr);
}
return result ;
}

public ArrayList<ArrayList<Color>> eineRunde() {
naechsteRunde();
return returnColorArray();

}

private int getLebendeNachbarn(int x, int y) {
int result = 0;
for (int xi = x - 1; xi < x + 1; xi++) {
if (!(xi < 0) && (xi != x)) {
for (int yi = y - 1; yi < y + 1; y++) {
if (!(yi < 0) && (yi != y)) {
if (zellen.get(xi).get(yi) == true) {
result++;
}
}
}
}
}

return result;
}

private void naechsteRunde() {
ArrayList<ArrayList<Boolean>> result = new ArrayList<ArrayList<Boolean>>();
for(int x = 0; x<zellen.size();x++){
ArrayList<Boolean> zwiarr = new ArrayList<Boolean>();
for(int y = 0; y < zellen.get(x).size();y++){
int lebendeNachbarn = getLebendeNachbarn(x,y);
boolean ergebnis = false ;
if(zellen.get(x).get(y)){
if((lebendeNachbarn<2) || (lebendeNachbarn > 3)) {
ergebnis = false ;
} else {
ergebnis = true ;
}
}else {
if(lebendeNachbarn == 3){
ergebnis = true ;
} else {
ergebnis = false ;
}

}
zwiarr.add(ergebnis);
}
result.add(zwiarr);
}
zellen = result ;

}

}
[/Java]
 
M

maki

Gast
Java:
ArrayList<ArrayList<Boolean>> zellen = new ArrayList<ArrayList<Boolean>>();
sollte heissen:
Java:
zellen = new ArrayList<ArrayList<Boolean>>();
sonst deklarierst du eine neue Variable.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java call by Value oder Reference Java Basics - Anfänger-Themen 35
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
H call by reference & value Java Basics - Anfänger-Themen 14
T Boolean by Reference Java Basics - Anfänger-Themen 6
T Schleifenindex "by reference" / "by value" Java Basics - Anfänger-Themen 13
O Socket by reference übergeben Java Basics - Anfänger-Themen 0
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
B Call by Value/Reference Java Basics - Anfänger-Themen 4
O Illegal Group Reference Java Basics - Anfänger-Themen 4
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
T Array prozedur, call by reference ? Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
K Variablen Cannot make a static reference to the non-static field time Java Basics - Anfänger-Themen 6
P Compiler-Fehler Cannot make a static reference to the non-static field process Java Basics - Anfänger-Themen 3
S call by reference? Java Basics - Anfänger-Themen 52
F Verständisproblem bzgl. nicht Vorhandensein von Call-by-reference Java Basics - Anfänger-Themen 2
F Mal wieder: Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 9
F Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 3
B Call By reference (Null pointer exception) Java Basics - Anfänger-Themen 6
M Reference Java Basics - Anfänger-Themen 2
C Call by reference Java Basics - Anfänger-Themen 11
W call-by-reference-Effekt bei Objekten Java Basics - Anfänger-Themen 3
B Cannot make a static reference...?? Java Basics - Anfänger-Themen 5
B Mal wieder "cannot make a static reference..." Java Basics - Anfänger-Themen 2
N Reference to non-static method Java Basics - Anfänger-Themen 8
S "Call by Reference" Java Basics - Anfänger-Themen 12
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S call by reference Java Basics - Anfänger-Themen 7
C Passing Reference by Value Java Basics - Anfänger-Themen 4
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
R Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 5
F Wie kann ich call by reference umgehen? Java Basics - Anfänger-Themen 14
L [Gelöst] Cannot make a static reference ... Java Basics - Anfänger-Themen 12
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
N Connot make a static reference. deklarierungsfehler Java Basics - Anfänger-Themen 10
F Call-By-Reference umgehen Java Basics - Anfänger-Themen 4
T object reference counts Java Basics - Anfänger-Themen 14
T Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 8
B Call by Reference Java Basics - Anfänger-Themen 7
frau-u Altes Problem: non-static method cannot be reference Java Basics - Anfänger-Themen 7
S call by reference vs. call by value - pls help Java Basics - Anfänger-Themen 7
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
el_pato DialogFenster wird nicht in Schleife geöffnet? Java Basics - Anfänger-Themen 30
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben