Fehlermeldung obwohl Variablen bereits deklariert sind?

doenis9

Mitglied
Hey Com.

ich bin gerade dabei Schere, Stein, Papier zu programmieren. Ich dachte daran, dass Benutzer 1 und Benutzer 2 über die verschiedenen Buttons ihren Wunschgegenstand auswählen können. Mit dem Klick auf den letzten Button soll dann if/else den Gewinner ermitteln. Nur leider kommt dabei eine Fehlermeldung. Wäre toll wenn mal jemand darüber schauen könnte und mir sagen würde, was dabei falsch ist 🙂

JButton btn1 = new JButton("Schere");
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int spieler1 = 1;
txt1.setText("Gespeichert!");

}
});
btn1.setFont(new Font("Tempus Sans ITC", Font.PLAIN, 11));
btn1.setBounds(10, 150, 89, 23);
contentPane.add(btn1);

JButton btn2 = new JButton("Stein");
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int spieler1 = 2;
txt1.setText("Gespeichert!");
}
});
btn2.setFont(new Font("Tempus Sans ITC", Font.PLAIN, 11));
btn2.setBounds(126, 150, 89, 23);
contentPane.add(btn2);


JButton btn3 = new JButton("Papier");
btn3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int spieler1 = 3;
txt1.setText("Gespeichert!");
}
});
btn3.setFont(new Font("Tempus Sans ITC", Font.PLAIN, 11));
btn3.setBounds(246, 150, 89, 23);
contentPane.add(btn3);



JLabel lblSpielerl = new JLabel("Spieler 2:");
lblSpielerl.setFont(new Font("Tempus Sans ITC", Font.BOLD, 12));
lblSpielerl.setBounds(10, 191, 89, 14);
contentPane.add(lblSpielerl);

JButton btn4 = new JButton("Schere");
btn4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int spieler2 = 1;
txt2.setText("Gespeichert!");

}
});
btn4.setFont(new Font("Tempus Sans ITC", Font.PLAIN, 11));
btn4.setBounds(10, 216, 89, 23);
contentPane.add(btn4);

JButton btn5 = new JButton("Stein");
btn5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int spieler2 = 2 ;
txt2.setText("Gespeichert!");
}
});
btn5.setFont(new Font("Tempus Sans ITC", Font.PLAIN, 11));
btn5.setBounds(126, 216, 89, 23);
contentPane.add(btn5);

JButton btn6 = new JButton("Papier");
btn6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int spieler2=3;
txt2.setText("Gespeichert!");
}
});
btn6.setFont(new Font("Tempus Sans ITC", Font.PLAIN, 11));
btn6.setBounds(246, 216, 89, 23);
contentPane.add(btn6);

txt3 = new JTextField();
txt3.setBounds(143, 333, 379, 20);
contentPane.add(txt3);
txt3.setColumns(10);

JButton btn7 = new JButton("Ausf\u00FChren");
btn7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

if (spieler1 == 1 & spieler2 == 1) {
txt3.setText("Unentschieden!");
}
}
 
Stichwort Globale Variable

Ich habe es jetzt mit dem Code private static final int versucht, aber dann kommts zu einer Fehlermeldung.

JButton btn1 = new JButton("Schere");
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
static private int spieler1 = 1; -> Illegal modifier for parameter spieler1; only final is permitted
}
});
 
Du musst es als Klassenvariable deklarieren 😉
bzw., wenn du es nur innerhalb einer Methode brauchst als local.

Java:
public class Foo {
    private int ply1 = ...;

    //more code...
}

Bzw:

public class Foo {
    public static void main(String[] args){
        int ply1 = ...;

        //more code...
    }
}

Ich weiß ja nicht genau, wie du es brauchst (mit welchen Modifiern etc.)
 

Neue Themen


Zurück
Oben