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!");
}
如果你看下面,由于某种原因,即使其中一个随机生成的数字等于另一个,这个循环也会继续。 Java
的新变化 - 只是玩,但为什么会这样?
对于上下文,people
是一个整数,而workers[]
是一个名称列表。
答案 0 :(得分:7)
问题在于:
if (randy != randy1 && randy != randy2 && randy != randy3 && randy1 != randy2 && randy1 != randy3 && randy2 != randy3); {
goOn = true;
}
if
个括号后的分号表示完成条件。结果,其余的总是被执行。删除分号,事情应该改进:)
(准确地说是我的意思:这是正确的版本加上一些格式化)
if (randy != randy1
&& randy != randy2
&& randy != randy3
&& randy1 != randy2
&& randy1 != randy3
&& randy2 != randy3) {
goOn = true;
}