ランダムロール番号を1 &の間で出力するゲームを作成しました。システムは、ユーザーが1秒間以上[1]またはそれ未満の[2]を推測するかどうかをユーザーに確認しますロール番号。彼らの推測に基づいて、システムは "Draw!"、 "あなたは間違って推測する"のいずれかを印刷します。または "あなたは正しく推測しました"。その後、プログラムは、whileループを使用してプログラムを再起動するかどうか(yes [y])をユーザーに促します。ユーザー入力の検証 - hasnext()while
しかし、現在、[1]/[2]だけを入力できるように、整数 '推測'ユーザー入力を検証しようとしています。 whileループを使ってhasNext()メソッドを使ってこれらの条件を設定するのは難しいです。私のプログラムは、正しいまたは間違ったユーザ入力時にwhileループを挿入した後には、今は続行しません。
を参照してください「//無効なユーザーのエントリ」ブロック
コード:
public static void main(String args[]) {
String replay = "y";
Scanner input = new Scanner (System.in);
while(replay.equals("y"))
{
//roll one
int rNum1 = (int)(Math.random() * 11); //declare random roll one, gives result between 1 and 10
//print roll one
System.out.println("You roll the 10-sided die.");
System.out.println("It lands on " + rNum1 + ".");
System.out.println(); //space
//User guess
System.out.println("Will a second die roll higher or lower?");
System.out.println("To guess higher enter [1], or to guess lower, enter [2].");
//roll two
int rNum2 = (int)(Math.random() * 11); //declare random roll two
int guess = input.nextInt(); //user's guess/HiLo
//invalid user entry
while(!input.hasNextInt() || (guess != 1 && guess != 2))
{
System.out.println("Invalid entry"); // print incorrect guess entry input
System.out.println("To guess higher enter [1], or to guess lower, enter [2].");
input.next(); //reset scanner "input"
}
//print roll two
System.out.println(); //space
System.out.println("You roll the die again.");
System.out.println("It lands on " + rNum2 + ".");
System.out.println(); //space
if (guess == 1) //guessed higher
{
if (rNum1 == rNum2)
{
System.out.println("Draw!");
}
else if (rNum1 > rNum2)
{
System.out.println("You guessed wrongly.");
}
else
{
System.out.println("You guessed correctly!");
}
}
if (guess == 2) //guessed lower
{
if (rNum1 == rNum2)
{
System.out.println("Draw!");
}
else if (rNum1 > rNum2)
{
System.out.println("You guessed correctly!");
}
else
{
System.out.println("You guessed wrongly.");
}
}
System.out.println("Would you like to play again? Enter [y] for yes.");
replay = input.nextLine();
}
}