Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас эта программа просто пропускает цикл while при запуске и просто отображает сообщение о потере.
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
public class NumberGame {
private static int guess = 0;
private static int presses = 0;
public static void main(String[] args) {
JFrame window = new JFrame("Number Game");
window.setLayout(new BorderLayout());
JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
JPanel centerPanel = new JPanel();
JLabel topLabel = new JLabel("Pick numbers from 1 to 77.");
topPanel.add(topLabel, BorderLayout.NORTH);
JTextField field = new JTextField(10);
field.setPreferredSize(new Dimension(80,20));
topPanel.add(field, BorderLayout.CENTER);
JButton button = new JButton("Guess");
button.addActionListener(e -> {
if (field.getText() != "") {
guess = Integer.parseInt(field.getText());
field.setText("");
presses ++;
}
});
button.setPreferredSize(new Dimension(100,40));
centerPanel.add(button, BorderLayout.NORTH);
JLabel bottomLabel = new JLabel("Enter your guess");
bottomPanel.setLayout(new BorderLayout());
bottomPanel.add(bottomLabel, BorderLayout.CENTER);
//Generate a random number using the math class
int num = (int)(77*Math.random())+1;
//System.out.println(num);
int guesses = 5;
guess = -1;
presses = 0;
window.add(topPanel, BorderLayout.NORTH);
window.add(bottomPanel, BorderLayout.SOUTH);
window.add(centerPanel, BorderLayout.CENTER);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(300,200);
window.setVisible(true);
while (guess != num && guesses > 0 && presses == (5-guesses)) {
if (guess > num && guess != -1) {
bottomLabel.setText("Skill issue, too big. Try again. ");
}else if (guess < num && guess != -1){
bottomLabel.setText("Ha ha, too small. Try again. ");
}
guesses --;
presses ++;
}
if (guesses > 0) {
bottomLabel.setText("GG! You won! You had " + guesses + " guesses remaining.");
}else {
bottomLabel.setText("lol ur bad you lose. The number was " + num + ".");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... be-pressed
Как я могу заставить цикл while ждать нажатия JButton? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1733743092
Anonymous
Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас эта программа просто пропускает цикл while при запуске и просто отображает сообщение о потере.
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
public class NumberGame {
private static int guess = 0;
private static int presses = 0;
public static void main(String[] args) {
JFrame window = new JFrame("Number Game");
window.setLayout(new BorderLayout());
JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
JPanel centerPanel = new JPanel();
JLabel topLabel = new JLabel("Pick numbers from 1 to 77.");
topPanel.add(topLabel, BorderLayout.NORTH);
JTextField field = new JTextField(10);
field.setPreferredSize(new Dimension(80,20));
topPanel.add(field, BorderLayout.CENTER);
JButton button = new JButton("Guess");
button.addActionListener(e -> {
if (field.getText() != "") {
guess = Integer.parseInt(field.getText());
field.setText("");
presses ++;
}
});
button.setPreferredSize(new Dimension(100,40));
centerPanel.add(button, BorderLayout.NORTH);
JLabel bottomLabel = new JLabel("Enter your guess");
bottomPanel.setLayout(new BorderLayout());
bottomPanel.add(bottomLabel, BorderLayout.CENTER);
//Generate a random number using the math class
int num = (int)(77*Math.random())+1;
//System.out.println(num);
int guesses = 5;
guess = -1;
presses = 0;
window.add(topPanel, BorderLayout.NORTH);
window.add(bottomPanel, BorderLayout.SOUTH);
window.add(centerPanel, BorderLayout.CENTER);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(300,200);
window.setVisible(true);
while (guess != num && guesses > 0 && presses == (5-guesses)) {
if (guess > num && guess != -1) {
bottomLabel.setText("Skill issue, too big. Try again. ");
}else if (guess < num && guess != -1){
bottomLabel.setText("Ha ha, too small. Try again. ");
}
guesses --;
presses ++;
}
if (guesses > 0) {
bottomLabel.setText("GG! You won! You had " + guesses + " guesses remaining.");
}else {
bottomLabel.setText("lol ur bad you lose. The number was " + num + ".");
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79263509/how-can-i-make-a-while-loop-wait-for-a-jbutton-to-be-pressed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия