所以最近我張貼的問題問我的更高的遊戲時,它是所有的地方,只是不工作,我已經採取了另一種方法在這個遊戲中,它的工作,只是一個小問題,這一次,它更容易表現出比解釋那麼,這裏是我的代碼:修復我的循環,並需要對輸入輔助檢查,爪哇
String noReplay = "\nThank you for playing.";
String highLow = "(H)igher or (L)ower: ";
String loseHigh = "Card is higher, you lose. Would you like to play again? Y/N: ";
String loseLow = "Card is lower, you lose. Would you like to play again? Y/N: ";
String playAgain;
boolean replay = false;
Random rand = new Random();
Scanner scan = new Scanner(System.in);
do {
int card1 = rand.nextInt(13) + 1;
int card2 = rand.nextInt(13) + 1;
System.out.println("Card is: " + card1);
System.out.printf(highLow);
String guess = scan.nextLine().toUpperCase();
if(card2 > card1 && guess.equalsIgnoreCase("H")) {
System.out.println("Card is: " + card2);
System.out.printf(highLow);
replay = true;
guess = scan.nextLine().toUpperCase();
}
else if(card2 > card1 && guess.equalsIgnoreCase("L")) {
System.out.println("Card is: " + card2);
System.out.printf(loseHigh);
playAgain = scan.nextLine().toUpperCase();
if(playAgain.equalsIgnoreCase("Y")) {
replay = true;
}
else if(playAgain.equalsIgnoreCase("N")) {
replay = false;
System.out.println(noReplay);
}
}
else if(card2 < card1 && guess.equalsIgnoreCase("H")) {
System.out.println("Card is: " + card2);
System.out.printf(loseLow);
playAgain = scan.nextLine().toUpperCase();
if(playAgain.equalsIgnoreCase("Y")) {
replay = true;
}
if(playAgain.equalsIgnoreCase("N")) {
replay = false;
System.out.println(noReplay);
}
}
else if(card2 < card1 && guess.equalsIgnoreCase("L")) {
System.out.println("Card is: " + card2);
System.out.printf(highLow);
replay = true;
guess = scan.nextLine().toUpperCase();
}
} while(replay != false);
這裏我的項目的目的是創建一個簡單的遊戲,當用戶爲了輸入上面或下面的卡號,程序將以正確的答案作出迴應,或者從該階段重放遊戲,或者詢問用戶是否因失敗而想再次玩。
這工作得很好,但是從我的輸出:
Card is: 9
(H)igher or (L)ower: h
Card is: 11
(H)igher or (L)ower: l
*Card is: 6*
*(H)igher or (L)ower: l*
*Card is: 7*
Card is higher, you lose. Would you like to play again? Y/N: y
*Card is: 13*
*(H)igher or (L)ower: h*
*Card is: 10*
(H)igher or (L)ower:
我們可以在標有星號線看到,它不是做它應該做的。 當我說更高,如果數字較低,它應該問我是否想再玩一次,因爲我錯了。在這種情況下,它不?
所以這是我的問題^
另一件事,而在它的IM,我想請與輸入檢查器的幫助,我只希望用戶能夠輸入Y,N,H,L (我已經排除了大寫或小寫問題)。
謝謝您的閱讀!
您應該詢問一次do/while的每次迭代的用戶輸入,並根據遊戲的當前狀態和當前卡做些事情。你正在做/做很多事情,而這又增加了許多你不需要的複雜性。 –
我將如何去? @RAZ_Muh_Taz – SeanHub