【发布时间】:2016-12-23 11:35:40
【问题描述】:
好吧,我似乎无法为我的问题找到明确的答案。
我需要一个java程序,它可以返回一个用户输入的值,即一个正整数。
为了将此与许多其他类似问题区分开来,我需要编程以在输入字符串时不会崩溃。该程序将需要重复提示用户输入,直到输入一个正整数。脚本是这样的:
Input: 7.2
Error, try again: -5
Error, try again: -2.4
Error, try again: 3.77777
Error, try again: -1
Error, try again: 0
Error, try again: -33
Error, try again: microwave
Error, try again: -1
Error, try again: 4.2
Error, try again: hello
Error, try again: 3.14159
Error, try again: 4
4 is a positive integer.
重要的是当输入诸如单词之类的内容时程序不会崩溃。我想不出一种方法让程序做这样的事情。我可以将hasNextInt 与扫描仪一起使用,但是我不知道如何检查它是否大于零,因为在另一种情况下输入可能是字符串。
有人可以帮我开发一个可以返回上述脚本的程序吗?非常感谢。
编辑:好的,我终于在另一个问题中找到了我正在寻找的答案。这个解决方案不使用parseInt(),也不使用try/catch,这正是我要找的。很好很简单。所以这里是解决方案代码:
Scanner in = new Scanner(System.in);
int num;
System.out.print("Input: ");
do {
while (!in.hasNextInt()) {
System.out.print("Error, not integer. Try again: ");
in.next();
}
num = in.nextInt();
if (num<=0){
System.out.print("Error, not positive. Try again: ");
}
} while (num <= 0);
System.out.println(num + " is a positive integer.");
【问题讨论】:
-
读入
nextLine,使用try-catch并解析为Integer,捕获异常。如果没有出现异常,检查num<0? -
@KevinEsche 对
try-catch不太熟悉,你能详细说明一下,并告诉我它是如何在代码中使用的吗?对不起,我不是很聪明:(
标签: java string int java.util.scanner