Java while loop赢了';t break(我也将我的条件设置为false)
我做了一个东西,掷五个骰子,直到得到一个五种骰子。我会把我的代码贴在下面,这样你就可以看到了。如果五人行成功,我已将while条件设置为false。在它说“滚动…”之后什么也没发生。我应该使用.equals()吗Java while loop赢了';t break(我也将我的条件设置为false),java,while-loop,infinite-loop,Java,While Loop,Infinite Loop,我做了一个东西,掷五个骰子,直到得到一个五种骰子。我会把我的代码贴在下面,这样你就可以看到了。如果五人行成功,我已将while条件设置为false。在它说“滚动…”之后什么也没发生。我应该使用.equals()吗 你没有在循环中重新滚动。如果roll不是0,它将是一个无限循环,一遍又一遍地打印“Invalid roll!”。这里很少有东西可以导致无限循环 第一个是你的roll变量总是zero你不是 再次滚动或不更改该变量 第二个是1到5个变量的可能性较小 正在执行if条件 if(2==1&&3=
你没有在循环中重新滚动。如果
roll
不是0,它将是一个无限循环,一遍又一遍地打印“Invalid roll!”。这里很少有东西可以导致无限循环
roll
变量总是zero你不是
再次滚动或不更改该变量if
条件if(2==1&&3==1&&4==1){
rollCount++;
滚动=假;
}
另外,您不需要使用while(rolling==true)
而是可以使用while(rolling)
,因为您的滚动变量初始化为true
这是我想到的
while(rolling) {
switch(roll) {
case 0 :
if(two == one && three == one && four == one) {
rollCount++;
rolling = false;
}
else {
rollCount++;
System.out.println("If you want to stop roll press -1: ");
System.out.println("Or type 0 to roll again.");
roll = scan.nextInt();
if(roll == -1){
System.out.println("Yahtzee!");
System.out.println("Took " + rollCount + " rolls!");
return;
}
}
break;
default :
System.out.println("Invalid roll!");
roll = 0;
}
}
System.out.println("Yahtzee!");
System.out.println("Took " + rollCount + " rolls!");
如果
roll
不是0,则需要将rolling
更改为false
default :
System.out.println("Invalid roll!");
rolling = false;
因此,当您的
while
循环重新运行时,它将注意到false
条件并中断。第二次滚动到哪里?while(rolling==true){
与while(rolling)
相同。永远不要显式地将布尔值与true(或false)进行比较,这样会更加冗长,而且编写while时也非常容易(rolling=true)
“如果五人行成功,则将我的while条件设置为false”你的代码中的条件看起来像是只检查一种类型的4。它检查1==2,1==3,1==4。而且,1,2,3,4和5在你的整个程序中都不会改变-它们在整个时间都是相同的。另外,我认为所有的5个骰子都必须相等才能得到一个Yahtzee!你的代码会给我一个Yahtzee!当前四个匹配时。祝贺你已经11岁了。在做任何事情之前,你必须学习如何在IDE中使用调试器。它允许你一次一行地检查代码,并在执行过程中检查变量的值。如果你使用调试器,你会很容易发现代码中的错误,而且学到的远不止在这里提问。首先使用调试器,然后在遇到无法向自己解释的问题时在这里提问。
default :
System.out.println("Invalid roll!");
rolling = false;