我遇到输入验证码的问题。我输入了它提示我的种子值,但之后我必须输入另一个有效输入才能让我的菜单选择打印出来。每当我也选择其中一个菜单选项时,它就会发生。
输入验证应该仅包含1到5之间的整数值。因此,如果有人输入不在范围内的字母,负数或整数,它会要求他们输入一个,以便他们可以继续选择菜单。
我写错了代码吗?我想摆脱那些不必要的第二次输入而只需要一次以继续游戏。由于某种原因,我还注意到10个作品后的值,即使6-9被视为无效。我不确定为什么会有效。谢谢!
import java.util.Random;
import java.util.Scanner;
public class Sonowah
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Please enter a seed value [integer]: ");
//assume input is integer for seed for RNG
int seed = in.nextInt();
Random rng = new Random(seed); //RNG
int charge = 100;
//loop here
while (charge > 0)
{
int number;
do
{
while (!in.hasNextInt(5))
{
System.out.println("Please enter valid interger");
in.next();
}
number = in.nextInt();
}
while (number <= 0);
System.out.println("Interger is valid!");
System.out.println("1. Surrender");
System.out.println("2. Defend");
System.out.println("3. Fight");
System.out.println("4. Charge");
System.out.println("5. Potions");
String menuchoice = in.next();
if (menuchoice.equals("1"))
{
statement
}
答案 0 :(得分:1)
我认为您的循环不应该使用in.hasNextInt()...您已经向用户询问了一个数字,只需检查该数字是否介于1和5之间.Scanner.hasNextInt(5)询问用户对于int,然后尝试在基数5中解释它。请参阅documentation
答案 1 :(得分:0)
这是你的问题:
do
{
while (!in.hasNextInt(5))
{
System.out.println("Please enter valid interger");
in.next();
}
number = in.nextInt();
}
while (number <= 0);
基本上,所有这些代码在其余程序代码的上下文中都是无用的。