Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编程:当我输入一个数字并检查数字是否正确时,我遇到了一个问题_Java - Fatal编程技术网

Java编程:当我输入一个数字并检查数字是否正确时,我遇到了一个问题

Java编程:当我输入一个数字并检查数字是否正确时,我遇到了一个问题,java,Java,我创建了一个丹麦游戏,你可以猜1-10之间的数字 当我输入一个数字来检查我的猜测是否正确时,控制台中就会出现一个错误 当我输入一个数字并检查数字是否正确时,你知道为什么会出现问题吗 Game.java import java.util.Random; public class Game { int randomNumber; public Game() { // Set randomNumber to randon number [1;10]

我创建了一个丹麦游戏,你可以猜1-10之间的数字

当我输入一个数字来检查我的猜测是否正确时,控制台中就会出现一个错误

当我输入一个数字并检查数字是否正确时,你知道为什么会出现问题吗

Game.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;
    }
}
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。请不要链接到你的代码,在问题中插入一个完整的例子,这样如果链接断开,用户仍然可以看到代码。