シンプルなHiLoカードゲームをコーディングし、カードのデッキからカードの価値を与え、次のカードのバリューを推測しようとすると「高い」、「低い」または「等しい」と入力します。ユーザストリングの入力を確認する
ちょうど実際には、繰り返し入力でユーザーの入力検証を行うことはできません。必要なパラメータを持つ文字列が入力されるまで移動しません。
これまでの私のコード:
import java.util.Scanner;
import java.util.Random;
public class HiLoGame {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
Random randomCard = new Random();
int numberOfSuccesses = 0;
boolean finished = false;
int card = (randomCard.nextInt(13) + 2);
while (finished != true) {
int nextCard = (randomCard.nextInt(13) + 2);
String pictureCard = "";
if (((numberOfSuccesses < 0) ? nextCard : card) == 11) {
pictureCard = "Jack";
} else if (((numberOfSuccesses < 0) ? nextCard : card) == 12) {
pictureCard = "Queen";
} else if (((numberOfSuccesses < 0) ? nextCard : card) == 13) {
pictureCard = "King";
} else if (((numberOfSuccesses < 0) ? nextCard : card) == 14) {
pictureCard = "Ace";
}
System.out.println("The card is a " + ((card > 10) ? pictureCard : card));
if (numberOfSuccesses == 4) {
System.out.println("Congratulations. You got them all correct");
finished = true;
break;
}
while (!reader.nextLine().toLowerCase().equals("higher")
|| !reader.nextLine().toLowerCase().equals("lower")
|| !reader.nextLine().toLowerCase().equals("equal")) {
System.out.println("Try again!");
reader.next();
}
String userGuess = reader.nextLine().toLowerCase();
//TODO validate input
if (userGuess.equals("higher")) {
if (nextCard > card) {
numberOfSuccesses++;
} else {
finished = true;
break;
}
} else if (userGuess.equals("lower")) {
if (nextCard < card) {
numberOfSuccesses++;
} else {
finished = true;
break;
}
} else if (userGuess.equals("equal")) {
if (nextCard == card) {
numberOfSuccesses++;
} else {
finished = true;
break;
}
}
System.out.println(numberOfSuccesses);
card = nextCard;
}
if (numberOfSuccesses < 4) {
System.out.println("Sorry, incorrect!");
}
}
}
と関連するコードの抜粋:それはちょっとだけ「もう一度お試しください」上とを与える上の部分で立ち往生
while (!reader.nextLine().toLowerCase().equals("higher")
|| !reader.nextLine().toLowerCase().equals("lower")
|| !reader.nextLine().toLowerCase().equals("equal")) {
System.out.println("Try again!");
reader.next();
}
。私は.hasNextInt()を使用する必要があるプログラムを完了しましたが、この文字列の検証には苦労しています。
ご協力いただきありがとうございます!
これらの3つのサブセクションを別々に評価し、何を得るか教えてください。 –
@ john3136のコメントに加えて、ユーザの入力が「それほど高くない」、「低くない」、または「等しくない」というユーザの再入力が必要であると考えるべきである。また、pictureCardロジックはちょっと変わっています。これは、numberOfSuccessが負になることはないため、動作します。 – JimW