2014-10-28 48 views
1

我試圖讓一個do while循環會一直循環直到X或者等於y或x等於7 下面的代碼:做循環不工作? Java的

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,而且因爲開始時有7個字母,所以應該說「你輸了」我不知道我在哪裏會出錯?

+0

這部分是怎麼回事? rollDice()!= 7);'?你拋出了一堆'rollDice()',但是大多數時候你不會影響它,使它實際上是無用的。 – njzk2 2014-10-28 18:32:21

+0

這只是我犯的一個錯誤,一旦你們指出來,我就修復它。感謝您的注意。 – 2014-10-28 18:37:12

回答

3

編輯:

請回路改成這樣:

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

您應該只調用rollDice()每次迭代一次。你每次全面打電話3次。另外,||需要更改爲& &。

+0

我改變了,謝謝你的注意。但是,當x = y或x = 7時,它仍然不會停止。 – 2014-10-28 18:36:27

+0

我這樣做仍然無法工作。 :( – 2014-10-28 18:38:15

+0

這是一個程序來玩擲骰子,所以如果rollDice是7或11它打印勝利,如果它是3,2或12它打印輸了 – 2014-10-28 18:41:35

0

這聽起來像在那裏你寫

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

你想

x != y && x != 7 

(如果你說你想循環,直到「X或者等於y或x等於7」,那麼你真的想& &,不||在你的病情)