2013-09-30 63 views
0

新手程序員在這裏。我使用Java來嘗試創建一個猜數字遊戲。我希望我的while while循環繼續循環,直到用戶輸入正確的數字或​​他們用完猜測。這是我所擁有的,我無法弄清楚如何在我的生活中使用2個布爾控制器。將2個布爾控制器放在do while表達式中?

do 
    {System.out.println("Enter guess #1"); 
    userGuess = keyboard.nextInt(); 

    } while ((userGuess != actualNumber) || (remainingGuesses = guesses;  remainingGuesses >= 1; remainingGuesses--)); 

任何幫助表示讚賞!

+1

看起來像一個for-loop會更合適。 – Dukeling

回答

2

我認爲,你想要的東西更接近這個效果:

remainingGuess = guesses; 
do { 
    System.out.println("Enter guess #1"); 
    userGuess = keyboard.nextInt(); 
} while (userGuess != actualNumber || remainingGuesses-- > 0) 

逐行:

remainingGuesses = guesses; 

分配guessesremainingGuesses一次,如果你做的每一次迭代你的循環,它永遠不會結束

userGuess != actualNumber || remainingGuesses-- > 0 

不斷迭代,而用戶猜對了remainingGuesses大於0

remainingGuesses-- 

計算結果爲變量remainingGuesses的當前值,表達在進入循環之前通過1

+0

不是'--remainingGuesses'更有意義嗎? – Aurand

+0

你可以真的做到這一點,我只是選擇一個。它仍然會在循環的下一次迭代中遞減。 –

+0

一個很好的答案我會說,只有我擔心的是,建立早期將這些類型的事物分解爲獨立方法的習慣(考慮到自稱的新手狀態)可能是很好的做法。根據你的答案提出一個答案來證明這一點。 –

0

初始化剩餘的猜測遞減它在此之後。只有檢查的同時paranthesis條件「()」

reaminingGuesses = guesses; 
do 
    {System.out.println("Enter guess #1"); 
    userGuess = keyboard.nextInt(); 
    remainingGuess--; 
    } while ((userGuess != actualNumber) || (remainingGuesses >= 1)); 
0

如果你想把它當作一個做,而我會做一些小的改動,並假設你有東西像actualNumber和總人數的定義的常量允許猜測:

// break the calls into seperate methods, to make them easier to read in the long term and to 
// seperate logical concerns into discrete elements. 
do { 
// get the user guess 
    guess = getGuess(); 
// if shouldStop returns true you would stop, if it returns false you should continue, thus the !.. 
} while (!shouldStop(guess)) { 
    // decrement the guesses. 
    --remainingGuesses; 
} 

/// define these methods somewhere.., 
// get your guess 
public int getGuess() { 
    System.out.println("Enter guess #1"); 
    return keyboard.nextInt(); 
} 


public boolean shouldStop(int guess) { 
// condensed if statement syntax in java, very handy for this kind of thing 
    // do we have enough remaining guess to keep going? If so, compare the guess to the actual number 
    // otherwise return true (the stop signal 
    return remainingGuesses > 0 ? guess == actualNumber : true; 
} 

如果你真的想追隨整個事情的經過,你可以打破猜測==實際人數進入的方法爲好,但它可能不是因爲它的簡單的等同性檢查這種情況下需要。

的methos shouldStop可以定義一些但方式...

早期我認爲這是有幫助的出完全寫這些邏輯塊,並從那裏凝結,例如:

public boolean shouldStop(int guess) { 
    if(remainingGuesses <=0) { 
    return true; 
    } else if(guess == actualNumber) { 
    return true; 
    } else { 
    return false; 
} 

}