【发布时间】:2018-05-29 04:03:34
【问题描述】:
我创建了一个游戏,它打印一个介于 1 和 10 之间的随机掷骰子号码。然后系统会询问用户他们是想猜测更高的 [1] 还是更低的 [2] 以获得第二个掷骰子号码。根据他们的猜测,系统将打印“抽奖!”、“您猜错了”。或“你猜对了。”。然后程序会提示用户是否要使用 while 循环重新启动程序(是 [y])。
但是,现在我正在尝试验证整数“猜测”用户输入,以便分别只能输入 [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();
}
}
【问题讨论】:
标签: java java.util.scanner do-while boolean-logic next