Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das?

JuliaK

Mitglied
Java:
import java.util.concurrent.ThreadLocalRandom;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;



public class Main22 {
    
    
    static int myNumber = ThreadLocalRandom.current().nextInt(0, 100 + 1);
    static int tries = 0;
    static JLabel text = new JLabel("Gebe eine Zahl zwischen 0 und 100 ein!");
    static JTextField textField = new JTextField();

    
        public static void main(String[] args) {
        
            openUI();
            
        }
        
        public static void openUI() {
            
            JFrame frame = new JFrame("Rate die Zahl!");
            JFrame.setDefaultLookAndFeelDecorated(true);
            frame.setSize(400, 300);
            frame.setLocation(100, 150);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            

            text.setBounds(50 , 50, 350, 30);
            
            textField.setBounds(50, 100, 225, 30);
            
            JButton button = new JButton("Rate!");
            button.setBounds(50, 150, 225, 30);
            
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String textFromTextfield = textField.getText();
                    int number = Integer.parseInt(textFromTextfield);
                    guess(number);
                }
            });
            
            frame.add(text);
            frame.add(textField);
            frame.setLayout(null);
            frame.setVisible(true);
            frame.add(button);

        }
    
    public static void guess(int number) {
    
        if(number == myNumber) {
            text.setText("Richtig geraten mit " + tries + " Versuchen!");
        } else {
            tries++;
            if(number < myNumber) {
                text.setText("Falsch geraten :( Deine Zahl ist zu klein!");
                } else { text.setText("Falsch geraten :( Deine Zahl ist zu groß!");
             }
            
            textField.setText(" ");
            
            }
        }
    }
 
Hast du auch eine Zahl eingegeben die auch in einen Int geparst werden kann?
Buchstaben Sonderzeichen werden einen Fehler verursachen.
 
Dein Problem kommt vermutlich durch die Zeile:
textField.setText(" ");

Dort setzt Du in das textField ein Leerzeichen. Wenn der Benutzer nun eine Zahl eingibt, kommt die hinter das Leerzeichen und damit erhältst Du einen String, der nicht umgewandelt werden kann.

Daher rate ich zu folgenden Schritten:
a) Setze das textField auf den leeren String, also das Leerzeichen heraus nehmen.
b) Führe auch noch ein trim() aus. Dadurch werden Leerzeichen entfernt, die ggf. der Benutzer noch mit eingibt.

Edit: Das trim wäre z.B. so einzufügen: String textFromTextfield = textField.getText().trim();
 
Und welche genau ?
Fehler bitte immer mit Posten.
Dein Problem kommt vermutlich durch die Zeile:
textField.setText(" ");

Dort setzt Du in das textField ein Leerzeichen. Wenn der Benutzer nun eine Zahl eingibt, kommt die hinter das Leerzeichen und damit erhältst Du einen String, der nicht umgewandelt werden kann.

Daher rate ich zu folgenden Schritten:
a) Setze das textField auf den leeren String, also das Leerzeichen heraus nehmen.
b) Führe auch noch ein trim() aus. Dadurch werden Leerzeichen entfernt, die ggf. der Benutzer noch mit eingibt.

Edit: Das trim wäre z.B. so einzufügen: String textFromTextfield = textField.getText().trim();
Ohhh - das Leerzeichen war wirklich das Problem. Vielen vielen Dank für die Tipps!
 

Zurück
Oben