我正在帮助一个朋友解决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);
唯一的问题是,如果您输入的不是数字,则会无限循环。
有什么帮助吗?
您可以使用hasNextInt()验证Scanner
如果你做的话就会成功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 + ")");
也可以看看:
- 输入错误类型时如何防止扫描仪抛出异常? (java)
除了不必要的冗长错误处理之外,您的代码存在问题,因为您让nextInt()
扔一个InputMismatchException
而不是检查hasNextInt()
,就是当它does抛出异常,你不推进Scanner
过去有问题的输入!这就是为什么你会得到无限循环!
您可以调用并丢弃nextLine()
来解决这个问题,但更好的是如果你使用无异常hasNextInt()
而是采用上面介绍的预检查技术。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)