0

我的输入验证码有问题。我输入了它提示我的种子值,但之后我必须输入另一个有效输入才能打印出我的菜单选项。每次我也选择菜单选项之一时都会发生这种情况。

输入验证应该只接受 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
                }
4

2 回答 2

1

我认为您的循环不应该使用 in.hasNextInt() ...您已经向用户询问了一个数字,只需检查该数字是否在 1 到 5 之间。 Scanner.hasNextInt(5) 向用户询问一个 int然后尝试在基数 5 中解释它。请参阅文档

于 2012-10-05T22:47:23.273 回答
0

这是你的问题:

do 
{
    while (!in.hasNextInt(5))
    {
        System.out.println("Please enter valid interger");
        in.next();
    }
    number = in.nextInt();
} 
while (number <= 0);

基本上,所有这些代码在其余程序代码的上下文中都是无用的。

于 2012-10-05T22:49:15.157 回答