if (i== 0) {
boolean goOn = false;
do {
int randy = (int) (Math.random()*people);
System.out.println(workers[randy] + ": Sunday, 7-12");
int randy1 = (int) (Math.random()*people);
System.out.println(workers[randy1] + ": Sunday, 9-12");
int randy2 = (int) (Math.random()*people);
System.out.println(workers[randy2] + ": Sunday, 12-4");
int randy3 = (int) (Math.random()*people);
System.out.println(workers[randy3] + ": Sunday, 12-4");
if (randy != randy1 && randy != randy2 && randy != randy3 && randy1 != randy2 && randy1 != randy3 && randy2 != randy3); {
goOn = true;
}
} while (goOn==false);
System.out.println("Done!");
}
Run Code Online (Sandbox Code Playgroud)
如果你看下面,由于某种原因,即使其中一个随机生成的数字等于另一个,这个循环也会继续.一种新的Java- 只是玩,但为什么会发生这种情况?
对于上下文,people是一个整数,并且workers[]是一个名称列表.
问题出在这里:
if (randy != randy1 && randy != randy2 && randy != randy3 && randy1 != randy2 && randy1 != randy3 && randy2 != randy3); {
goOn = true;
}
Run Code Online (Sandbox Code Playgroud)
if括号后面的分号表示完成条件.结果,其余的总是被执行.删除分号,事情应该改善:)
(准确地说是我的意思:这是正确的版本加上一些格式)
if (randy != randy1
&& randy != randy2
&& randy != randy3
&& randy1 != randy2
&& randy1 != randy3
&& randy2 != randy3) {
goOn = true;
}
Run Code Online (Sandbox Code Playgroud)