如何在Java中检查用户输入的类型?

时间:2015-07-30 14:57:00

标签: java

我想知道如何为用户输入进行类型检查。在这里,我有一个简单的测试来检查用户输入是否介于1和10之间。我想设置它以便用户也可以输入一个字母,主要是因为我可以使用输入'q'来退出程序。 / p>

是否有扫描仪的一部分可以打字检查?我的想法是有一个if语句:如果用户输入类型为int continue,如果它不是int类型,检查是否为q退出程序,否则输出这是一个错误。下面是我到目前为止,它会在输入数字时抛出一个表达式,因为类型不匹配。

public static void main(String[] args) {
    //Create new scanner named Input
    Scanner Input = new Scanner(System.in);
    //Initialize Number as 0 to reset while loop
    int Number = 0;

    do
    {
        //Ask user to input a number between 1 and 10
        System.out.println("At anytime please press 'q' to quit the program.");
        System.out.println();
        System.out.print("Please enter a number between 1 and 10:");
        Number = Input.nextInt();

        if (Number == 'Q'|| Number == 'q')
        {
            System.out.println("You are now exiting the program");
        }
        else if (Number >= 1 && Number <= 10)
        {
            System.out.println("Your number is between 1 and 10");
        }   
        else
        {
            System.out.println("Error: The number you have entered is not between"
                    + " 1 and 10, try again");
        }
    }
    //Continue the loop while Number is not equal to Q
   while (Number != 'Q' & Number != 'q');
}

}

感谢大家的回复。我有点新,所以try语句对我来说是新的,但看起来它会起作用(似乎有点自我解释它的作用)。我将更多地研究它的使用并正确实现它。

6 个答案:

答案 0 :(得分:1)

我会使用nextLine()parseInt()来查看它是否为int

    int Number;
    String test = "";
    boolean isNumber = false;
    ......

    test = Input.nextLine();
    try
    {
        Number = Integer.parseInt(test);
        isNumber = true;
    }
    catch(NumberFormatException e)
    {
         isNumber = false;
    }
    if(isNumber)
    {
        if (Number >= 1 && Number <= 10)
        {
            System.out.println("Your number is between 1 and 10");
        }   
        else
        {
            System.out.println("Error: The number you have entered is not between"
                + " 1 and 10, try again");
        }
    }
    else
    {
        if (test.equalsIgnoreCase("q"))
        {
            System.out.println("You are now exiting the program");
        }
    }

.........
while (!test.equalsIgnoreCase("q"));

答案 1 :(得分:1)

试试这个

    Scanner Input = new Scanner(System.in);
    //Initialize Number as 0 to reset while loop
    String Number = "0";

    do {
        try {
            //Ask user to input a number between 1 and 10
            System.out.println("At anytime please press 'q' to quit the program.");
            System.out.println();
            System.out.print("Please enter a number between 1 and 10:");
            Number = Input.next();

            if (Number.equalsIgnoreCase("q")) {
                System.out.println("You are now exiting the program");
            } else if (Integer.valueOf(Number) >= 1 && Integer.valueOf(Number) <= 10) {
                System.out.println("Your number is " + Number);
            } else {
                System.out.println("Error: The (" + Number + ") is not between 1 and 10, try again");
            }
        } catch (NumberFormatException ne) {
            System.out.println("Error: The (" + Number + ") is not between 1 and 10, try again");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    } //Continue the loop while Number is not equal to Q
    while (!Number.equalsIgnoreCase("q"));

答案 2 :(得分:0)

将输入作为字符串读入,以检查Q / q的输入。然后,您可以通过以下方式从输入字符串解析为整数,捕获潜在的NumberFormatExceptions。

String input = "5"
try {
int number = Integer.parseInt(input);
} catch (NumberFormatException e) {
System.out.println("Not a number!") 
}

或类似的东西。

答案 3 :(得分:0)

您可以通过这种方式检查它是否int

String inputArg = Input.next();

private boolean isInt(String inputArg){
    boolean isInt = true;
    try {
         Integer.parseInt(inputArg);
    } catch(NumberFormatException e) {
         isInt = false;
    }
    return isInt;
}

其他方式是使用regular expressions

答案 4 :(得分:0)

找到这段代码检查一下,它对我有用。

[Authorize]

答案 5 :(得分:-1)

您可以将输入作为String获取,然后在所述String上使用正则表达式匹配。

String txt = Input.nextLine();
if(txt.matches("[0-9]+") // We have a number
{
   // Safe to parse to number
}
else if(txt.matches("[A-Za-z]+") // We have alphabeticals
{
   // Check for various characters and act accordingly (here 'q')
}