Zum Inhalt springen

Java Quelltextfehler - Memory


Empfohlene Beiträge

Geschrieben

Hey Leute

hier kommt jemand hier weiter :/

Kann mir jemand den Fehler nennen ? Das Spiel was programmiert wird ist Memory, kennt warscheinlich jeder :)

Lg und vielen dank im vorraus !

Testklasse:

package memory;

import java.awt.*;

import java.awt.event.*;

import java.util.Random;

import javax.swing.*;

public class TestKlasse implements MouseListener, ActionListener{

private JFrame f;

private JButton end;

private Karte [][] k;

private int[][] x;

private int[][] y;

public TestKlasse() {

f=new JFrame();

f.setBackground(Color.GRAY);

f.setBounds(100, 100, 900, 700);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.getContentPane().setLayout(null);

f.setVisible(true);

end = new JButton("END");

end.setBounds(730, 620,120,30);

f.getContentPane().add(end);

end.addActionListener(this);

k=new Karte [2][8];

for (int i = 0; i < 2; i++) {

for (int j = 0; j < 8; j = j + {

k[j] = new Karte1();

k[j + 1] = new Karte2();

k[j + 2] = new Karte3();

k[j + 3] = new Karte4();

k[j + 4] = new Karte5();

k[j + 5] = new Karte6();

k[j + 6] = new Karte7();

k[j + 7] = new Karte8();

x[0] = (60 + 150 * i);

y[0] = 50;

x[1] = (60 + 150 * i);

y[1] = 200;

x[2] = (60 + 150 * i);

y[2] = 350;

x[3] = (60 + 150 * i);

y[3] = 500;

x[4] = (60 + 150 * (i + 2));

y[4] = 50;

x[5] = (60 + 150 * (i + 2));

y[5] = 200;

x[6] = (60 + 150 * (i + 2));

y[6] = 350;

x[7] = (60 + 150 * (i + 2));

y[7] = 500;

}

}

for (int i = 0; i < 4; i++) {

for (int j = 0; j < 8; j++) {

{

k[j].setBounds(x[j], y[j], 150, 113);

f.getContentPane().add(k[j]);

k[j].addMouseListener(this);

}

}

}

}

public void fuehreAus(){

for (int i = 0; i < 4; i++)

for (int j = 0; j < 8; j++)

k[j].hide();

}

public void mische()

{

k[1][2] = k[1][7];

k[1][7] = k[1][2];

k[1][1] = k[0][5];

k[0][5] = k[1][4];

k[1][1] = k[0][1];

k[0][1] = k[1][1];

k[0][3] = k[0][4];

k[0][4] = k[0][3];

}

public void mouseClicked(MouseEvent arg0) {

// TODO Auto-generated method stub

}

public void mouseEntered(MouseEvent arg0) {

// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent arg0) {

// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent event) {

for (int i = 0; i < 4; i++) {

for (int j = 0; j < 8; j++) {

if (event.getSource() == k[j]) {

k[j].turn();

}

if(k[0][j].off()==true &&

k[1][j].off()==true){

k[0][j].setBounds(750,400,150, 113);

k[1][j].setBounds(750,400,150, 113);

}

}

}

}

public void mouseReleased(MouseEvent arg0) {

// TODO Auto-generated method stub

}

public void actionPerformed(ActionEvent action) {

if (action.getSource()==end){

System.exit(0);

}

}

}

Startklasse:

public class StartKlasse {

public static void main(String[] args) {

TestKlasse tk = new TestKlasse();

tk.fuehreAus();

}

}

Geschrieben
Wie äußert sich denn "der Fehler"?

Exception in thread "main"

java.lang.NullPointerException

at memory.TestKlasse.<init>(TestKlasse.java:41)

at memory.StartKlasse.main(StartKlasse.java:7)

Das steht da. Also beim nullpointer.

Geschrieben

Was ist denn in der Zeile 41 deiner TestKlasse? Denn dort versuchst du auf eine null Referenz zuzugreifen.

Bei dem Spagetti Code würde ich jetzt mal darauf tippen dass das Problem beim Zugriff auch ein Array x liegt.


k=new Karte [2][8];


for (int i = 0; i < 2; i++) {

// deine for schleife lässt sich so nicht kompilieren

for (int j = 0; j < 8; j = j + {


...


x[i][0] = (60 + 150 * i); // das könnte Zeile 41 sein dein x hast du aber nie instanziert und greifst aber darauf zu

y[i][0] = 50;

x[i][1] = (60 + 150 * i);

y[i][1] = 200;

x[i][2] = (60 + 150 * i);

y[i][2] = 350;

x[i][3] = (60 + 150 * i);

y[i][3] = 500;

x[i][4] = (60 + 150 * (i + 2));

y[i][4] = 50;

x[i][5] = (60 + 150 * (i + 2));

y[i][5] = 200;

x[i][6] = (60 + 150 * (i + 2));

y[i][6] = 350;

x[i][7] = (60 + 150 * (i + 2));

y[i][7] = 500;



}

}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...