我在帮一个朋友解决java的问题。然而,我们遇到了一个障碍。我们使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,不断询问用户是否提供了其他信息。唯一的问题是,我们不知道如何处理错误。
我们尝试过的内容:
do {
int reloop = 0;
try {
number = nextInt();
} catch (Exception e) {
System.out.println ("Please enter a number!");
reloop ++;
}
} while(reloop != 0);唯一的问题是,如果你输入的不是数字,这个循环就会无限循环。
有什么帮助吗?
发布于 2010-04-23 11:53:28
如果执行Scanner,则可以使用hasNextInt()验证nextInt()是否会成功。如果你想跳过“垃圾”,你也可以调用并丢弃nextLine()。
所以,就像这样:
Scanner sc = new Scanner(System.in);
while (!sc.hasNextInt()) {
System.out.println("int, please!");
sc.nextLine();
}
int num = sc.nextInt();
System.out.println("Thank you! (" + num + ")");另请参阅:
除了不必要的冗长错误处理之外,您的代码的问题是,当nextInt()抛出异常时,您不会使Scanner超过有问题的输入!这就是为什么你会得到一个无限循环!
您可以调用并丢弃nextLine()来解决这个问题,但如果您使用上面介绍的无异常hasNextInt()预检查技术,效果会更好。
发布于 2013-07-23 17:15:30
如果数值不是int,则弹出异常,如果不是,reloop将变为1,循环退出
int reloop = 0;
do {
try {
number = nextInt();
reloop ++;
} catch (Exception e) {
System.out.println ("Please enter a number!");
}}
while(reloop == 0);https://stackoverflow.com/questions/2696063
复制相似问题