I am very new to Java, and am trying to make a program that asks to use to guess a random number between 1 and 77. How can I make the while loop in this code run only when an answer has been provided in the JField, and the button has been pressed? Right now this program just skips the while loop altogether when run and just displays the losing message.
<code>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 + ".");
}
}
}
</code>
<code>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 + ".");
}
}
}
</code>
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 + ".");
}
}
}