Java输入需要两次

时间:2012-10-05 22:26:28

标签: java

我遇到输入验证码的问题。我输入了它提示我的种子值,但之后我必须输入另一个有效输入才能让我的菜单选择打印出来。每当我也选择其中一个菜单选项时,它就会发生。

输入验证应该仅包含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
                }

2 个答案:

答案 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);

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