Hus*_*ain 6 java java.util.scanner
我正在帮助一个有java问题的朋友.但是,我们遇到了障碍.我们使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,不断询问用户是否提供了其他内容.唯一的问题是,我们无法弄清楚如何做错误的handeling.
我们尝试过的:
do {
int reloop = 0;
try {
number = nextInt();
} catch (Exception e) {
System.out.println ("Please enter a number!");
reloop ++;
}
} while(reloop != 0);
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,如果您输入的不是数字,这将无限循环.
有帮助吗?
pol*_*nts 13
如果您这样做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 + ")");
Run Code Online (Sandbox Code Playgroud)
代码的问题,除了不必要的详细错误处理,因为你nextInt()抛出InputMismatchException而不是检查hasNextInt(),是当它确实抛出异常时,你不会推进Scanner过去有问题的输入!这就是你获得无限循环的原因!
您可以调用并丢弃nextLine()以解决此问题,但更好的是,如果您使用hasNextInt()上面提到的无异常预检查技术.