随机生成器始终等于0(Java)

随机生成器始终等于0(Java),java,Java,我正在使用Head First Java,我的随机生成器总计为0。以下是我的课程: 这是我上课的主要方法 public class GameLauncher { public static void main(String[] args) { GuessGame game = new GuessGame(); game.startGame(); } } 这是我的播放器对象类: import java.util.Random; public class Player {


我正在使用Head First Java,我的随机生成器总计为0。以下是我的课程: 这是我上课的主要方法

public class GameLauncher {
public static void main(String[] args) {
    GuessGame game = new GuessGame();
    game.startGame();
}
}
这是我的播放器对象类:

import java.util.Random;

public class Player {
    int number = 0; //Where the guess goes

    public void guess() {
        //random1 is in GuessGame
        Random random2 = new Random();
        int number = random2.nextInt(10);
        System.out.println("I'm guessing " + number);
    }
}
最后,这是发生大多数代码的类

  import java.util.Random;

public class GuessGame {
    //Guessgame has three instance variables for the three Player objects
    Player p1;
    Player p2;
    Player p3;

    public void startGame() {
        //Create three Player objects and assign them to the three Player instance variables
        p1 = new Player();
        p2 = new Player();
        p3 = new Player();
        //Declare three variables to hold the three guesses the players make
        int guessp1 = 0;
        int guessp2 = 0;
        int guessp3 = 0;
        //Declare three variables to hold a true or false based on the player's answer
        boolean p1isRight = false;
        boolean p2isRight = false;
        boolean p3isRight = false;
        //Make a "target" number that the players have to guess
        Random random = new Random();
        //Generate a number between 0 and 9
        int targetNumber = random.nextInt(10);
        System.out.println("I'm thinking of a number between 0 and 9...");

        while (true) {
            System.out.println("Number to guess is " + targetNumber);
            //Call each player's guess() method
            p1.guess();
            p2.guess();
            p3.guess();
            /*
            Get each player's guess (the result of their guess() method
            running) by accessing the number variable of each player
            */
            guessp1 = p1.number;
            guessp2 = p2.number;
            guessp3 = p3.number;
            System.out.println("Player one guessed " + guessp1);
            System.out.println("Player two guessed " + guessp2);
            System.out.println("Player three guessed " + guessp3);
            /*
            Check each player's guess to see if it matches the target number. If a player is right, then set that player's variable to be true (remember, we set it false by default)
             */
            if (guessp1 == targetNumber) {
                p1isRight = true;
            }
            if (guessp2 == targetNumber) {
                p2isRight = true;
            }
            if (guessp3 == targetNumber) {
                p3isRight = true;
            }
            //If player one OR player two OR player three is right... (the || operator means OR)
            if (p1isRight || p2isRight || p3isRight) {
                System.out.println("We have a winner!");
                System.out.println("Player one got it right? " + p1isRight);
                System.out.println("Player two got it right? " + p2isRight);
                System.out.println("Player three got it right? " + p3isRight);
                System.out.println("Game is over.");
                break; //Game over, so break out of the loop
            }
            else {
                //We must keep going because nobody got it right!

                System.out.println("Players will have to try again.");
            } //end if/else
        } //end loop
    } //end method
    } //end class
我是这些论坛的新手,如果我做错了什么,请告诉我:) 有人知道为什么这样不行吗? 谢谢
Lyfe

您将随机数存储在局部变量中,并且您认为您已将其设置为

排队

int number = random2.nextInt(10);
换成

this.number = random2.nextInt(10);
这至少解决了问题

另请参见


欢迎来到Stackoverflow。另见:)上面写着我必须等5分钟,到时候我会接受的。我一直在想为什么这样可以解决这个问题,你能给我解释得更详细一点吗?@Lyfe看到答案中的链接。特别是围绕局部变量和实例变量显示您正在运行此游戏。是否有main方法或从其他程序调用它