Zugriff auf Objekte aus doppelten Array

M

Mr. Q

Gast
Guten Tag,

ich arbeite an einem Programm, in dem zwei Listen auf dieselben Objekte zugreifen(sollen). Es handelt sich um ein Sudoku-Programm und die 81 Kästchen sollen sowohl zeilen- und spaltenweise über das Array Felder, als auch Gruppenweise (diese 9er-Blöcke) über das Array Gruppenkatalog, das die neun Blöcke (GruppeA- GruppeI) enthält, die wieder je 9 Kästchen enthalten.

Ich habe das Programm mal aufs nötigste zusammengefasst, es enthält jetzt nur noch 2 Blöcke und ergibt keinen Sinn mehr, aber die Fehlermeldung bleibt die gleiche.

Hier das Programm (die Kästchen heißen dort Zellen):

Java:
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main extends JFrame implements ActionListener{
	
	Zelle Felder[][] = new Zelle[9][9];
	
	JButton eins = new JButton("1");
	
	Zelle GruppeA[]=new Zelle[9];
	Zelle GruppeB[]=new Zelle[9];
	Zelle[][] Gruppenkatalog= new Zelle[9][9];

	JLabel zwei = new JLabel();
	JLabel drei = new JLabel();
	JLabel vier = new JLabel();
	JLabel fünf = new JLabel();
	JLabel sech = new JLabel();
	
	
	public Main()
	{
		setLayout(new GridLayout(4,6));
		for(int i=0;i<3;i++)
		{
			for(int j=0;j<6;j++)
			{
				Felder[i][j]=new Zelle(i,j);
				add(Felder[i][j]);
				
			}
			
		}
		add(eins);
		add(zwei);
		add(drei);
		add(vier);
		eins.addActionListener(this);
		
		Zelle GruppeA[]={Felder[0][0], Felder[0][1], Felder[0][2], 
						 Felder[1][0], Felder[1][1], Felder[1][2], 
						 Felder[2][0], Felder[2][1], Felder[2][2]};

		Zelle GruppeB[]={Felder[0][3], Felder[0][4], Felder[0][5], 
				 		 Felder[1][3], Felder[1][4], Felder[1][5], 
				 		 Felder[2][3], Felder[2][4], Felder[2][5]};

		
		Zelle[] Gruppenkatalog[]={GruppeA, GruppeB};
		
		setVisible(true);
		setResizable(true);
		pack();
	}

	
	
public static void main (String[]args){
		new Main();
}

	public void actionPerformed(ActionEvent arg0) {
		
		if(arg0.getSource()==eins){	
			
			if(Prüfung()==false){                            //(Das ist Zeile 70)
				System.out.println("Falsch");
			}else{
				System.out.println("Richtig");
			}
		}
	}
	
	public boolean Prüfung(){
		boolean fehlerfrei=true;
		int gruppe=1;
		int Ziffer=1;
		int element=2; 
		
		if(Gruppenkatalog[gruppe][element].Belegung==Ziffer){    //Das ist Zeile 84
			fehlerfrei=false;
		}
		return fehlerfrei;
	}
}

und die Klasse Zelle:
Java:
public class Zelle extends JButton{

	int spalte;
	int zeile;
	public Zelle(int a, int b){
		spalte=a;
		zeile=b;
	}
	
	public Dimension getPreferredSize(){
		return(new Dimension(70,70));    }
	
	int Belegung=0;
	
}

Und die Fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Main.Prüfung(Main.java:84)
	at Main.actionPerformed(Main.java:70)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
	at java.awt.Component.processMouseEvent(Component.java:6108)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:5873)
	at java.awt.Container.processEvent(Container.java:2105)
	at java.awt.Component.dispatchEventImpl(Component.java:4469)
	at java.awt.Container.dispatchEventImpl(Container.java:2163)
	at java.awt.Component.dispatchEvent(Component.java:4295)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
	at java.awt.Container.dispatchEventImpl(Container.java:2149)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4295)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Ich nehme jetzt mal an das entweder Gruppenkatalog nicht richtig deklariert wird, oder 2 Arrays nicht das selbe (sondern nur das gleiche) Objekt enthalten können.
Nur wie geht das richtig?
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
Code:
 int element=9;

Du greifst auf ein Element zu das es nicht gibt. Das Array fängt bei 0 an, demnach ist der größte Index bei dir 8 (0-8) und nicht 9 !
 
Zuletzt bearbeitet:
M

Mr. Q

Gast
ok, sorry mein fehler beim kürzen ich änder das mal. Das ändert aber nichts an der Fehlermeldung.
 
M

Mr. Q

Gast
Ok, solangsam wirds peinlich...

Gruppe muss auch kleiner sein, das ist aber auch nicht der Hauptfehler, mit
Java:
int gruppe=1
verschwindet die Fehlermeldung noch nicht.
 

Michael...

Top Contributor
Hatte eigentlich eher eine NullPointerException erwartet, da die Felder von
Code:
Gruppenkatalog
auf die Du in der Methode Prüfung zugreifst, nicht initialisiert sind.
Du hast folgende Arrays sowohl als lokale Variablen im Konstruktor und Instanzvariablen der Klasse:
Gruppenkatalog, GruppeA, GruppeB

Und nur die im Konstruktor werden gefüllt --> keine lokalen Variablen im Konstruktor erzeugen und nur die Instanzvariablen initialisieren.
 
M

Mr. Q

Gast
Oh, nein überhaupt nicht. Jetzt ist es endlich wie schon im ungekürzten Programm eine NullPointerException.
 
M

Mr. Q

Gast
Momentmal, ich fülle doch "Felder" auch erst im Konstruktor und auf dessen Elemente kann ich zugreifen...
 

XHelp

Top Contributor
Nö, tust du nicht. Du erstellst im Konstruktor Methodenvariablen, die du dann befüllst. Außerhalb der Methode existieren die nicht.
(Mach die Typendeklarationen weg, dann sollte es klappen)
 

Michael...

Top Contributor
Momentmal, ich fülle doch "Felder" auch erst im Konstruktor und auf dessen Elemente kann ich zugreifen...

Ja Felder ist die einzige Instanzvariable deren Felder initialisiert werden. Bei den anderen dreien erzeugst Du im Konstruktor neue Variablen mit dem selben Namen wie die der Instanzvariablen
--> Entferne die Typdeklarationen vor den Variablen im Konstruktor
 
M

Mr. Q

Gast
So?

Java:
public class Main extends JFrame implements ActionListener{
    
    Zelle Felder[][] = new Zelle[9][9];
    
    [...]

    Zelle GruppeA[]=new Zelle[9];
    Zelle GruppeB[]=new Zelle[9];
    Zelle[][] Gruppenkatalog= new Zelle[9][9];
 
    [...]
    
    public Main()
    {
        setLayout(new GridLayout(4,6));
        for(int i=0;i<3;i++)
        {
            for(int j=0;j<6;j++)
            {
                Felder[i][j]=new Zelle(i,j);
                add(Felder[i][j]);
                
            }
            
        }

        [...] 

        GruppeA[]={Felder[0][0], Felder[0][1], Felder[0][2],    //Marke 1
                         Felder[1][0], Felder[1][1], Felder[1][2], 
                         Felder[2][0], Felder[2][1], Felder[2][2]};
 
        GruppeB[]={Felder[0][3], Felder[0][4], Felder[0][5],    //Marke 2:
                         Felder[1][3], Felder[1][4], Felder[1][5], 
                         Felder[2][3], Felder[2][4], Felder[2][5]};
 
        Gruppenkatalog[]={GruppeA, GruppeB};                   //Marke 3
        
        setVisible(true);
        setResizable(true);
        pack();
    }

liefert folgende Fehlermeldungen:
Marke 1:
Multiple markers at this line
- Syntax error on token "]", VariableDeclaratorId expected after this token
- Type mismatch: cannot convert from Zelle to GruppeA (9mal)
- GruppeA cannot be resolved to a type

Marke 2:
Multiple markers at this line
- Type mismatch: cannot convert from Zelle to GruppeB (9mal)
- Duplicate local variable $missing$
- GruppeB cannot be resolved to a type
- Syntax error on token "]", VariableDeclaratorId expected after this token

Marke 3:
Multiple markers at this line
- Type mismatch: cannot convert from Zelle[] to Gruppenkatalog
- Duplicate local variable $missing$
- Type mismatch: cannot convert from Zelle[] to Gruppenkatalog
- Syntax error on token "]", VariableDeclaratorId expected after this token
- Gruppenkatalog cannot be resolved to a type

Übrigens:
Mir fällt grad auf, das es funktioniert, wenn man die Zellen im Konstruktor einzeln initialisiert, also
Java:
GruppeA[0]=Felder[0][0];
GruppeA[1]=Felder[0][1];
...
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
bei Verwendung der Array-Variable keine []

deshalb ist es generell besser, auch die Variablen schon anders zu deklarieren, das [] beim Typ, nicht beim Variablennamen:
Java:
int[] ar = new int[5];
ar[4] = 45; // ok, hier doch mit []
sort(ar); // kein []
wenn du erst noch ein Objekt zuweist, dann musst du vorher kein leeres Array erstellen
Java:
Zelle[][] felder = null;
felder = getArray();
felder = new Zelle[][] {..., ..}; // das new Zelle[][] muss leider auch hin, bisschen komisch in Java
Variablen klein schreiben!
 
M

Mr. Q

Gast
durch weglassen der [] im Konstruktor ergibt sich ein neuer Fehler:
Code:
Array constants can only be used in initializers
 

Marco13

Top Contributor
Das erscheint AFAIK bei sowas wie
Java:
int array[];
array = {1,2,3}

Alternative vielleicht:
Java:
int array[];
array = new int[]{1,2,3};
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
W zugriff auf Objekte Java Basics - Anfänger-Themen 11
F Zugriff auf Objekte über ActionListener Java Basics - Anfänger-Themen 10
E Zugriff auf Objekte in einer ArrayList Java Basics - Anfänger-Themen 3
P Zugriff auf Objekte einer anderen Klasse Java Basics - Anfänger-Themen 1
S Zugriff auf andere methodenvariablen / Objekte Java Basics - Anfänger-Themen 4
N Zugriff auf Objekte von fremden Klassen aus? Java Basics - Anfänger-Themen 4
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben