Я делаю угадывание номерной программы, и у меня возникают проблемы с моей петлей. Когда я запускаю программу и вводю число в текстовое поле, и нажмите Enter, он замерзает. Я понял, что это может происходить из-за бесконечного цикла. Не стесняйтесь исправить меня, если я ошибаюсь. В основном, когда я ввожу число в текстовое поле и нажимаю Enter, предположим, чтобы изменить метку и изменить цвет фона, но этого не происходит, и я думаю, что это потому, что мой цикл работает до тех пор, пока победа не станет истинной, и когда я набираю свой номер, он продолжает работать это число вместо того, чтобы выводить правильную метку и позволять мне вводить другое число в текстовое поле. P.S: Я знаю, что кнопка newGame еще не работаетGuess Number Game GUI - Бесконечная петля
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class GuessingGame implements ActionListener
{
JFrame guessFrame;
JPanel guessPanel;
JTextField guessText;
JButton newGame;
JLabel rangeLbl, enterGuessLbl, winLbl;
Random rand = new Random();
int numToGuess = rand.nextInt(1000)+1;
int numOfTries = 0;
int guess;
public GuessingGame()
{
// Create the frame and container.
guessFrame = new JFrame("Guess the Number");
guessPanel = new JPanel();
guessPanel.setLayout(new GridLayout(5,0));
// Add the widgets.
addWidgets();
// Add the panel to the frame.
guessFrame.getContentPane().add(guessPanel, BorderLayout.CENTER);
// Exit when the window is closed.
guessFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Show the converter.
guessFrame.pack();
guessFrame.setVisible(true);
}
// Create and add the widgets for converter.
private void addWidgets()
{
// Create widgets.
guessText = new JTextField();
guessText.setHorizontalAlignment(JTextField.CENTER);
rangeLbl = new JLabel("I have a number between 1 and 1000. Can you guess my number?", SwingConstants.LEFT);
enterGuessLbl = new JLabel("Please enter your guess", SwingConstants.LEFT);
winLbl = new JLabel(" ", SwingConstants.CENTER);
newGame = new JButton("New Game");
// Listen to events from Convert textfield.
guessText.addActionListener(this);
// Add widgets to container.
guessPanel.add(rangeLbl);
guessPanel.add(enterGuessLbl);
guessPanel.add(guessText);
guessPanel.add(winLbl);
guessPanel.add(newGame);
}
// Implementation of ActionListener interface.
public void actionPerformed(ActionEvent event)
{
boolean win = false;
guess = Integer.parseInt(guessText.getText());
if (guess == numToGuess)
{
win = true;
}
else if (guess < numToGuess)
{
winLbl.setText("Too Low");
guessPanel.setBackground(Color.red);
guess = Integer.parseInt(guessText.getText());
}
else if (guess > numToGuess)
{
winLbl.setText("Too High");
guessPanel.setBackground(Color.blue);
guess = Integer.parseInt(guessText.getText());
}
winLbl.setText("Correct!");
guessPanel.setBackground(Color.green);
}
public static void main(String[] args)
{
GuessingGame game = new GuessingGame();
}
}
Я думаю, я понимаю, возможно, я просто отредактировал вопрос, чтобы опубликовать полный код – TubaShark
удалить цикл while, как было предложено, вам здесь не нужно. – Marcinek
я удалил цикл while, и теперь любое число ввода i верное haha – TubaShark