JAVA,棋盘游戏。随机骰子数不是随机的

时间:2019-03-11 13:51:54

标签: java random dice

我是Java新手,正在编写代码。我想编写一个简单的棋盘游戏。但是,如果我掷骰子,那么每掷骰子我得到的数字都是相同的。我做错了什么?

我有一个创建1到6之间的随机数的类:

public class Dice {
    public int throwDice() {
        Random random = new Random();
        int dice = random.nextInt(6) + 1;
        return dice;
    }
}

主要类别:

public class BoardGame{

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String r;
        Dice dice = new Dice();
        int roll = dice.throwDice();
        int position = 0;
        int finish = 40;

        while (finish >= position) {
            do {
                System.out.print("Roll the dice (r): ");
                r = input.nextLine();
            } while (!r.toLowerCase().equals("r"));

            if (r.toLowerCase().equals("r")) {
                System.out.println("You have rolled " + roll + ".");
                position += roll;
                System.out.println("You are now on square " + position + ".");
            }

        }
        System.out.println("You won!");
        input.close();
    }

}

谢谢!

4 个答案:

答案 0 :(得分:2)

获得随机结果的代码:

int roll = dice.throwDice();

仅运行一次。您可以一次调用throw方法。您存储结果,而不是存储某个函数的“指针”,该函数每次在某个地方使用roll时都会重复调用。

所以您应该把这一行放在上面:

roll = dice.throwDice();
System.out.println("You have rolled " + roll + ".");

就在您希望再掷骰子的地方正前方!

答案 1 :(得分:1)

public class Dice {
    private Random random;
    public Dice(){
        random = new Random();
    }

    public int throwDice(){
        int dice = random.nextInt(6) + 1;
        return dice;
    }
}

这将起作用,因为您的骰子现在有一个随机实例,每次调用throwDice()时都会生成新的随机整数

答案 2 :(得分:0)

将您的Dice类更改为此。

public class Dice {
    private Random random;
    public Dice(){
        random = new Random();
    }

    public int throwDice(){
        int dice = random.nextInt(6) + 1;
        return dice;
    }
}

并在循环内更新roll = dice.throwDice();。 这将起作用,因为您的骰子现在有一个随机实例,每次调用throwDice()时都会生成新的随机整数。

答案 3 :(得分:0)

int roll = dice.throwDice();添加到循环中后,您可能会发现每次获得的角色序列相同。如果您不希望这样做,则必须设置随机种子。

看到这个问题:Java random numbers using a seed