Так недавно я разместил вопрос о моей игре в Высшем и Нижнем, это было повсюду и просто не работало, я использовал другой подход в этой игре, и это работает, только с незначительным вопросом на этот раз, это проще показать, чем объяснить так, вот мой код:Фиксация моей петли и необходимость помощи в Input Checker, Java
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:
Мы можем видеть на помеченных линий, он не делает то, что он должен делать. Когда я говорю выше, если число ниже, оно должно спросить, хочу ли я играть снова, потому что я понял это неправильно. В этом случае это не так?
Так что мой вопрос^
Другое дело, в то время как им в этом, я хотел бы попросить помощи с Input Checker, я только хочу, чтобы пользователь, чтобы иметь возможность ввода Y, N, H, L (Ive отсортировал проблему с нижним или верхним регистром).
Благодарим за понимание!
вы должны спросить один раз для ввода от пользователя для каждой итерации do/while и исходя из текущего состояния игры и текущей карты. вы в настоящее время занимаетесь тонной работой в do/while, добавляя много сложностей, которые вам не нужны. –
Как бы я это сделал? @RAZ_Muh_Taz – SeanHub