我试图检查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。
答案 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;