做循环不工作? Java的

时间:2014-10-28 18:29:34

标签: java loops while-loop

我试图做一个while循环,它将保持循环,直到x等于y或x等于7 这是代码:

else if(y == 4 || y == 5 || y == 6 || y == 8 || y == 9 || y == 10){
    System.out.println("Value point is: " + y);

    int x = rollDice();
    do{
        System.out.println("Roll again: " + rollDice());
        x = rollDice();
    }
    while(x != y || rollDice() != 7);

    if(x == y){
        System.out.println("You Win!");
    }
    if(x == 7){
        System.out.println("You Lose");
    }
    return;

}}

这是输出的样子:

Dice roll is: 9
Value point is: 9
Roll again: 2
Roll again: 6
Roll again: 6
Roll again: 4
Roll again: 7
Roll again: 11
Roll again: 8
Roll again: 9
Roll again: 2
Roll again: 5
Roll again: 6
Roll again: 8
Roll again: 5
Roll again: 11
Roll again: 5
Roll again: 2
Roll again: 9
Roll again: 6
Roll again: 3
Roll again: 8
Roll again: 8
Roll again: 8
Roll again: 4
Roll again: 7
Roll again: 10
Roll again: 6
Roll again: 5
Roll again: 9
Roll again: 4
Roll again: 7
Roll again: 4
Roll again: 2
Roll again: 8
Roll again: 8
You Win!

显然8不等于9,并且由于在开头附近有七个应该说“你输了”我不知道我在哪里出错了?

2 个答案:

答案 0 :(得分:3)

编辑:

请将循环更改为:

do{
    x = rollDice();
    System.out.println("Roll again: " + x);
}
while(x != y && x != 7);

每次迭代只应调用一次rollDice()。你在每次回合中称它为3次。另外,||需要改为&&。

答案 1 :(得分:0)

听起来就像你写的那样

x != y || rollDice() != 7

你想要

x != y && x != 7

(如果你说要循环直到" x等于y或x等于7",那么你真的想要&&,而不是||,在你的条件下。)