switch case fängt beim letzten case an

Bitte aktiviere JavaScript!
Mein Problem ist ich habe versucht Wer wird Millionär zu programmieren, dabei habe ich für die Fragen switch case benutzt. Ich habe meine erste Frage von Anfang an in das JTextField Feld reingeschrieben, sowie die Anwtorten bei den Clickboxen.
Java:
Textfeld_Frage = new JTextField();
        Textfeld_Frage.setFont(new Font("Arial", Font.PLAIN, 15));
        Textfeld_Frage.setText("Frage1:  Ein zylindrisches Gef\u00E4\u00DF in dem Speisen gekocht werden \u2013 oder kurz:");
        Textfeld_Frage.setColumns(10);

JCheckBox chckbxD = new JCheckBox("d");
        chckbxD.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (chckbxD.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
            }
        });
        
        JCheckBox chckbxC = new JCheckBox("c");
        chckbxC.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (chckbxC.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
            }
        });
        
        JCheckBox chckbxA = new JCheckBox("a");
        chckbxA.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            
                if (chckbxA.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
            }
        });
        
        JCheckBox chckbxB = new JCheckBox("b");
        chckbxB.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (chckbxB.isSelected()) {
                    Textfeld_Antwort.setText("Richtige Antwort! Sie haben 50€ sicher. Drücken sie auf weiter spielen, um das Spiel fortzuführen, oder auf jetzt aufhören, um mit 50€ nach Hause zu gehen.");
                    }       
                }
            });
Mein Idee war es beim Button weiter spielen, die Felder zu ändern, wie folgt
Java:
JButton Button_Weiter = new JButton("Weiter spielen");
        Button_Weiter.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                
            int    i = 0;
                
    switch(i) {
    
    
    case 0:        Textfeld_Frage.setText("100-Euro-Frage: Was hat man redensartlich, wenn man häufig das Klo aufsuchen muss?");
                Textfeld_a.setText("Teenagerherz");
                Textfeld_b.setText("Abiturientenniere");
                Textfeld_c.setText("Konfirmandenblase");
                Textfeld_d.setText("Grundschülerlunge");
                Textfeld_Antwort.setText("");
                chckbxA.setSelected(false);
                chckbxB.setSelected(false);
                chckbxC.setSelected(false);
                chckbxD.setSelected(false);
                
                if (chckbxA.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                    }
                else if (chckbxB.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                    }
                else if (chckbxC.isSelected()) {
                    Textfeld_Antwort.setText("Richtige Antwort! Sie haben 100€ sicher. Drücken sie auf weiter spielen, um das Spiel fortzuführen, oder auf jetzt aufhören, um mit 100€ nach Hause zu gehen.");
                    i++;
                    }
                else if (chckbxD.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                    }
                
    case 1:        Textfeld_Frage.setText("200-Euro-Frage: Wenn jemand dem Finanzamt Geld schuldet, könnte man ihn passenderweise auffordern: \"Zahl endlich deine …\"");
                Textfeld_a.setText("Steuer, Mann!");
                Textfeld_b.setText("Deck, Offizier!");
                Textfeld_c.setText("Schiffs,Junge!");
                Textfeld_d.setText("Leicht, Matrose!");
                Textfeld_Antwort.setText("");
                chckbxA.setSelected(false);
                chckbxB.setSelected(false);
                chckbxC.setSelected(false);
                chckbxD.setSelected(false);
    
                if (chckbxA.isSelected()) {
                    Textfeld_Antwort.setText("Richtige Antwort! Sie haben 200€ sicher. Drücken sie auf weiter spielen, um das Spiel fortzuführen, oder auf jetzt aufhören, um mit 200€ nach Hause zu gehen.");
                }
                else if (chckbxB.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
                else if (chckbxC.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
                else if (chckbxD.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
.
.
.
.
    case 13:    Textfeld_Frage.setText("Eine-Million-Euro-Frage: Welchen Eintrag findet man im \"Urduden\" von 1880 nicht?");
                Textfeld_a.setText("Batterie");
                Textfeld_b.setText("Mikrophon");
                Textfeld_c.setText("Dynamit");
                Textfeld_d.setText("Glühlampe");
                Textfeld_Antwort.setText("");
                chckbxA.setSelected(false);
                chckbxB.setSelected(false);
                chckbxC.setSelected(false);
                chckbxD.setSelected(false);

                if (chckbxA.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
                else if (chckbxB.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
                else if (chckbxC.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                }
                else if (chckbxD.isSelected()) {
                    Textfeld_Antwort.setText("Richtige Antwort! Sie haben den Jackpot von 1.000.000€ gewonnen. Herzlichen Glückwunsch!");
                }
                
                }
            }
        });
So es klappt anfangs auch, nur wenn ich auf weiter spielen drücke, dann springt er direkt auf die letzte Frage und beachtet leider auch nicht, dass b nicht mehr die Richtige Antwort ist, sondern c und das Textfeld_Antwort ändert er auch nicht. (i++; nicht überall benutzt bis jetzt, da es schon beim ersten nichts bringt.)
 
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
In Java springt er von einem case zum nächsten. Um das zu verhindern, muss am Ende jedes case Bereiches ein break; kommen, um dieses weitergehen zu verhindern.
 
Und der Code ist auch nicht ganz verständlich. Du setzt, dass die checkboxes nicht ausgewählt sind und dann prüfst du, ob die checkboxes ausgewählt wurden? Nach dem Reset wird kaum eine Checkbox ausgewählt sein und die Prüfung darf ja auch erst später kommen und nicht sofort nach dem Setzen der Frage und Antworten ....
 
In Java springt er von einem case zum nächsten. Um das zu verhindern, muss am Ende jedes case Bereiches ein break; kommen, um dieses weitergehen zu verhindern.
Habe ich getan, funktioniert trotzdem nicht.
Und der Code ist auch nicht ganz verständlich. Du setzt, dass die checkboxes nicht ausgewählt sind und dann prüfst du, ob die checkboxes ausgewählt wurden? Nach dem Reset wird kaum eine Checkbox ausgewählt sein und die Prüfung darf ja auch erst später kommen und nicht sofort nach dem Setzen der Frage und Antworten ....
Ich setze ja den Haken der Checkbox, sodass es danach geprüft werden kann,oder nicht? Dass die Prüfung erst später kommen darf klingt logisch, aber wie würde das dann aussehen?
 
Also da wäre meine Frage: was funktioniert nicht? Die Auswertung kann noch nicht funktionieren, da die Prüfung ja direkt nach dem zurücksetzen kommt.

Aufbauen müsste man das mit zwei Funktionen:
Einmal der Reset oder wie du das nennen möchtest. Da wird dann die Frage gesetzt, die Haken rausgenommen u.s.w.
Die andere Funktion macht die Prüfung. In einer ersten Version kann man da einen Button einbauen „Auswertung“ oder so. Wenn dieser Knopf gedrückt wird, dann kommt die Auswertung, ob die Antwort richtig ist ...

Später kann man dann einen Timer einbauen oder so. Dann kommt die Auswertung automatisch nach x Sekunden.
 
Also da wäre meine Frage: was funktioniert nicht? Die Auswertung kann noch nicht funktionieren, da die Prüfung ja direkt nach dem zurücksetzen kommt.
Es wird immer noch die letzte Frage als erstes angezeigt. Und mir ist schon klar dass man 2 Funktionen braucht aber wie soll das aussehen?
Java:
int i = 0;
switch(i){
        
    case 0: Textfeld_Frage.setText("100-Euro-Frage: Was hat man redensartlich, wenn man häufig das Klo aufsuchen muss?");
                Textfeld_a.setText("Teenagerherz");
                Textfeld_b.setText("Abiturientenniere");
                Textfeld_c.setText("Konfirmandenblase");
                Textfeld_d.setText("Grundschülerlunge");
                Textfeld_Antwort.setText("");
                chckbxA.setSelected(false);
                chckbxB.setSelected(false);
                chckbxC.setSelected(false);
                chckbxD.setSelected(false);
                i++;
        
    case 1:     
        if (chckbxA.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                    break;
                    }
                else if (chckbxB.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                    break;
                    }
                else if (chckbxC.isSelected()) {
                    Textfeld_Antwort.setText("Richtige Antwort! Sie haben 100€ sicher. Drücken sie auf weiter spielen, um das Spiel fortzuführen, oder auf jetzt aufhören, um mit 100€ nach Hause zu gehen.");
                    i++;
                    }
                else if (chckbxD.isSelected()) {
                    Textfeld_Antwort.setText("Leider falsche Anwtort.Sie haben 0€ gewonnen.");
                    break;
                    }
    case 2:     Textfeld_Frage.setText("200-Euro-Frage: Wenn jemand dem Finanzamt Geld schuldet, könnte man ihn passenderweise auffordern: \"Zahl endlich deine …\"");
                Textfeld_a.setText("Steuer, Mann!");
                Textfeld_b.setText("Deck, Offizier!");
                Textfeld_c.setText("Schiffs,Junge!");
                Textfeld_d.setText("Leicht, Matrose!");
                Textfeld_Antwort.setText("");
                chckbxA.setSelected(false);
                chckbxB.setSelected(false);
                chckbxC.setSelected(false);
                chckbxD.setSelected(false);   
}
so zum Beispiel, oder wie?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben