Java编程:当我输入一个数字并检查数字是否正确时,我遇到了一个问题
我创建了一个丹麦游戏,你可以猜1-10之间的数字 当我输入一个数字来检查我的猜测是否正确时,控制台中就会出现一个错误 当我输入一个数字并检查数字是否正确时,你知道为什么会出现问题吗 Game.javaJava编程:当我输入一个数字并检查数字是否正确时,我遇到了一个问题,java,Java,我创建了一个丹麦游戏,你可以猜1-10之间的数字 当我输入一个数字来检查我的猜测是否正确时,控制台中就会出现一个错误 当我输入一个数字并检查数字是否正确时,你知道为什么会出现问题吗 Game.java import java.util.Random; public class Game { int randomNumber; public Game() { // Set randomNumber to randon number [1;10]
import java.util.Random;
public class Game {
int randomNumber;
public Game() {
// Set randomNumber to randon number [1;10]
Random rand = new Random();
randomNumber = rand.nextInt(10) + 1;
}
public int getRandomNumber() {
return randomNumber;
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class GameFrame extends JFrame implements ActionListener{
private Game game;
private Player player;
private JTextField inputField;
private JLabel gameAnswer, tries;
public GameFrame(String title) {
super(title);
getContentPane().setLayout(new FlowLayout());
setSize(300, 100);
// Start game & add player
game = new Game();
player = new Player();
addComponents();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void addComponents() {
JLabel tries = new JLabel("Forsøg: " + player.getTries());
getContentPane().add(tries);
inputField = new JTextField(8);
getContentPane().add(inputField);
JButton submitGuess = new JButton("Gæt tal");
submitGuess.addActionListener(this);
getContentPane().add(submitGuess);
JLabel gameAnswer = new JLabel("Gæt et tal mellem 1-10");
getContentPane().add(gameAnswer);
}
private void resetGame() {
// Create new randon number & new player
game = new Game();
player = new Player();
// Set default text in components
gameAnswer.setText("Gæt et tal mellem 1-10");
tries.setText("Forsøg: " + player.getTries());
}
@Override
public void actionPerformed(ActionEvent e) {
// Increment tries guessed
player.addTry();
tries.setText("Forsøg: " + player.getTries());
// Extract number guessed
String textEntered = inputField.getText();
int numberEntered = Integer.parseInt(textEntered);
// How was it compared to randomNumber?
if (numberEntered == game.getRandomNumber()) {
// CORRECT! - display optionpane
JOptionPane.showMessageDialog(null, "TILLYKKE! Du gættede rigtigt! Du brugte: " + player.getTries() + " forsøg.");
// Reset Game
resetGame();
} else if (numberEntered > game.getRandomNumber())
// To high
gameAnswer.setText("Forket! Du gættede for højt!");
else if (numberEntered < game.getRandomNumber())
// To low
gameAnswer.setText("Forkert! Du gættede for lavt!");
// Calculate result & display
}
public class Main {
public static void main(String[] args) {
new GameFrame("Gæt et tal");
}
}
public class Player {
private int tries;
public Player() {
tries = 0;
}
public void addTry() {
tries++;
}
public int getTries() {
return tries;
}
}
GameFrame.java
import java.util.Random;
public class Game {
int randomNumber;
public Game() {
// Set randomNumber to randon number [1;10]
Random rand = new Random();
randomNumber = rand.nextInt(10) + 1;
}
public int getRandomNumber() {
return randomNumber;
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class GameFrame extends JFrame implements ActionListener{
private Game game;
private Player player;
private JTextField inputField;
private JLabel gameAnswer, tries;
public GameFrame(String title) {
super(title);
getContentPane().setLayout(new FlowLayout());
setSize(300, 100);
// Start game & add player
game = new Game();
player = new Player();
addComponents();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void addComponents() {
JLabel tries = new JLabel("Forsøg: " + player.getTries());
getContentPane().add(tries);
inputField = new JTextField(8);
getContentPane().add(inputField);
JButton submitGuess = new JButton("Gæt tal");
submitGuess.addActionListener(this);
getContentPane().add(submitGuess);
JLabel gameAnswer = new JLabel("Gæt et tal mellem 1-10");
getContentPane().add(gameAnswer);
}
private void resetGame() {
// Create new randon number & new player
game = new Game();
player = new Player();
// Set default text in components
gameAnswer.setText("Gæt et tal mellem 1-10");
tries.setText("Forsøg: " + player.getTries());
}
@Override
public void actionPerformed(ActionEvent e) {
// Increment tries guessed
player.addTry();
tries.setText("Forsøg: " + player.getTries());
// Extract number guessed
String textEntered = inputField.getText();
int numberEntered = Integer.parseInt(textEntered);
// How was it compared to randomNumber?
if (numberEntered == game.getRandomNumber()) {
// CORRECT! - display optionpane
JOptionPane.showMessageDialog(null, "TILLYKKE! Du gættede rigtigt! Du brugte: " + player.getTries() + " forsøg.");
// Reset Game
resetGame();
} else if (numberEntered > game.getRandomNumber())
// To high
gameAnswer.setText("Forket! Du gættede for højt!");
else if (numberEntered < game.getRandomNumber())
// To low
gameAnswer.setText("Forkert! Du gættede for lavt!");
// Calculate result & display
}
public class Main {
public static void main(String[] args) {
new GameFrame("Gæt et tal");
}
}
public class Player {
private int tries;
public Player() {
tries = 0;
}
public void addTry() {
tries++;
}
public int getTries() {
return tries;
}
}
Player.java
import java.util.Random;
public class Game {
int randomNumber;
public Game() {
// Set randomNumber to randon number [1;10]
Random rand = new Random();
randomNumber = rand.nextInt(10) + 1;
}
public int getRandomNumber() {
return randomNumber;
}
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class GameFrame extends JFrame implements ActionListener{
private Game game;
private Player player;
private JTextField inputField;
private JLabel gameAnswer, tries;
public GameFrame(String title) {
super(title);
getContentPane().setLayout(new FlowLayout());
setSize(300, 100);
// Start game & add player
game = new Game();
player = new Player();
addComponents();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void addComponents() {
JLabel tries = new JLabel("Forsøg: " + player.getTries());
getContentPane().add(tries);
inputField = new JTextField(8);
getContentPane().add(inputField);
JButton submitGuess = new JButton("Gæt tal");
submitGuess.addActionListener(this);
getContentPane().add(submitGuess);
JLabel gameAnswer = new JLabel("Gæt et tal mellem 1-10");
getContentPane().add(gameAnswer);
}
private void resetGame() {
// Create new randon number & new player
game = new Game();
player = new Player();
// Set default text in components
gameAnswer.setText("Gæt et tal mellem 1-10");
tries.setText("Forsøg: " + player.getTries());
}
@Override
public void actionPerformed(ActionEvent e) {
// Increment tries guessed
player.addTry();
tries.setText("Forsøg: " + player.getTries());
// Extract number guessed
String textEntered = inputField.getText();
int numberEntered = Integer.parseInt(textEntered);
// How was it compared to randomNumber?
if (numberEntered == game.getRandomNumber()) {
// CORRECT! - display optionpane
JOptionPane.showMessageDialog(null, "TILLYKKE! Du gættede rigtigt! Du brugte: " + player.getTries() + " forsøg.");
// Reset Game
resetGame();
} else if (numberEntered > game.getRandomNumber())
// To high
gameAnswer.setText("Forket! Du gættede for højt!");
else if (numberEntered < game.getRandomNumber())
// To low
gameAnswer.setText("Forkert! Du gættede for lavt!");
// Calculate result & display
}
public class Main {
public static void main(String[] args) {
new GameFrame("Gæt et tal");
}
}
public class Player {
private int tries;
public Player() {
tries = 0;
}
public void addTry() {
tries++;
}
public int getTries() {
return tries;
}
}
您声明了
private JLabel gameAnswer,尝试
作为类字段,但从不初始化它,因为在addComponents()
方法中,您可以使用以下命令声明和初始化新对象:
JLabel tries = new JLabel("Forsøg: " + player.getTries());
JLabel gameAnswer = new JLabel("Gæt et tal mellem 1-10");
所以您得到了NullPointerException
。您需要像这样声明:
tries = new JLabel("Forsøg: " + player.getTries());
gameAnswer = new JLabel("Gæt et tal mellem 1-10");
它应该可以工作。请生成一个小的描述性代码,让您认为它不起作用。读取整个代码是不可能的。另外,请告诉我们您在控制台中遇到的错误。您好,欢迎使用SO。请不要链接到你的代码,在问题中插入一个完整的例子,这样如果链接断开,用户仍然可以看到代码。