检查userInput是否为带异常的数字

时间:2017-11-22 11:00:02

标签: java

我试图检查User的输入是否为int。

到目前为止我的代码:

static int readInt(Scanner userInput) {
    int intValue = 0;

    try {
    System.out.print("Please enter a number:");
    intValue = Integer.parseInt(userInput.nextLine());


    } catch (NumberFormatException ex) {
    Input.readInt(userInput);

    }
    return intValue;
}

问题是:如果我先给它输入不是数字,然后我给它一个数字它总是返回0.如果我给它一个数字第一次尝试它返回我给它的数字。

我错过了什么? 提前致谢

编辑:我只允许使用Integer.parseInt和Exceptions。

3 个答案:

答案 0 :(得分:1)

为了避免您的问题,您需要在catch块中将此Input.readInt(userInput)指定给您的变量。像这样:

intValue  = Input.readInt(userInput);

答案 1 :(得分:0)

看起来你没有在catch

中设置变量
intValue = Input.readInt(userInput);

答案 2 :(得分:0)

这里的递归是开销。使用循环:

Integer result = null;
do {
    System.out.print("Please enter a number:");
    try {
        result = Integer.parseInt(userInput.nextLine());
    } catch (NumberFormatException ex) {
        System.out.print("Not a number");
    }
} while(result==null);
return result;