在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");
}
}
}
答案 0 :(得分:4)
您需要将“变量roll1
和roll12
更新代码”添加到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等)将具有默认值(0
或false
),其引用将默认为null
。
<identifier> = <expression>;
计算表达式的值,并更新标识符以保存该值。您可以将这些组合成:
<type> <identifier> = <expression>;
这将声明一个变量并立即为其赋值。
while(<condition>) { <expressions> }
一次又一次地执行表达式,直到条件变为false。但仅重复花括号之间的表达式。 在你的代码中,这些大括号之间没有任何内容(例如,&#34;在while循环的主体中#34;)实际上更新了这些值。你只能在while循环之外调用赋值语句,所以什么都不会改变。