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):
und die Klasse Zelle:
Und die Fehlermeldung:
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?
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: