按字符类型限制控制台输入

时间:2012-11-25 19:39:52

标签: java console-application

我目前有一个简单的功能(在下面发布),询问用户一个问题,并希望得到一个整数答案。

有没有办法让java限制可输入控制台的字符,即只允许输入数字。

我知道在其他编程语言中有一些简单的方法可以做到这一点,但我应该如何在java中执行此操作并将其实现到我的函数中?

    static int questionAskInt(String question)
{
    Scanner scan = new Scanner (System.in);
    System.out.print (question+"\n");
    System.out.print ("Answer: ");
    return scan.nextInt();
}

1 个答案:

答案 0 :(得分:0)

使用Scanner.hasNextInt和while循环,您可以限制用户提供输入,直到它传递integer值。

while (!scan.hasNextInt()) {
    System.out.println("Please enter an integer answer");
    scan.next();
} 
return scan.nextInt();

或者,您也可以通过使用计数变量给出一定数量的机会(因此它不会进入infinite loop: -

int count = 3;

while (count > 0 && !scan.hasNextInt()) {
    System.out.println("Please enter an integer answer");
    System.out.println("You have " + (count - 1) + "more chances left.");
    count--;
    scan.next();
}

if (count > 0) {
    return scan.nextInt();
}

return -1;