即使没有满足条件,循环也会中断

时间:2014-08-15 23:29:21

标签: java loops

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[]是一个名称列表。

1 个答案:

答案 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;
    }