java - 随机循环while循环导致所有相同数字的无限循环

时间:2016-07-31 19:48:58

标签: java random while-loop

在Programming By Doing网站上,我坚持使用DoubleDice练习。它应该运行一个while循环,直到你为每个骰子得到相同的值(双打 - 3和3,4和4等)

我已经输入了我认为正确的代码,但是我得到了这个无限循环,每次通过while循环打印出完全相同的“randoms”。

我已经考虑了大约一天,并决定把它交给SO。

感谢。

import java.util.Random;

public class diceDoubles {

    public static void main(String[] args){

        Random dice = new Random();

        int roll1 = 1 + dice.nextInt(6);
        int roll2 = 1 + dice.nextInt(6);

        System.out.println("HERE COMES THE DICE!\n");

        while(roll1 != roll2) {

            System.out.println("Die 1: " + roll1);
            System.out.println("Die 2: " + roll2);
            System.out.println("The total is " + (roll1 + roll2) + "\n");
        }
    }
}

2 个答案:

答案 0 :(得分:4)

您需要将“变量roll1roll12更新代码”添加到while循环,如下所示:

while(roll1 != roll2) {

    roll1 = 1 + dice.nextInt(6);
    roll2 = 1 + dice.nextInt(6);

    System.out.println("Die 1: " + roll1);
    System.out.println("Die 2: " + roll2);
    System.out.println("The total is " + (roll1 + roll2) + "\n");
}

答案 1 :(得分:1)

花一些时间熟悉代码的控制流程,以及每个语句的作用。

<type> <identifier>;

这样的行DECLARE一个变量 - 即,给它一个类型,并在命名空间中放置一个位置。一旦声明了变量,对它的引用将在其范围内保持一致,并且不能重新赋值。 (大多数情况。成员变量和局部变量共享名称有些棘手,但您不必担心这一点。)

请注意,这并未指定值。原始数据类型(int,boolean,double等)将具有默认值(0false),其引用将默认为null

<identifier> = <expression>;

计算表达式的值,并更新标识符以保存该值。您可以将这些组合成:

<type> <identifier> = <expression>;

这将声明一个变量并立即为其赋值。

while(<condition>) { <expressions> }

一次又一次地执行表达式,直到条件变为false。但重复花括号之间的表达式。 在你的代码中,这些大括号之间没有任何内容(例如,&#34;在while循环的主体中#34;)实际上更新了这些值。你只能在while循环之外调用赋值语句,所以什么都不会改变。