Java.util.scanner错误处理
我正在帮助一位朋友解决一个java问题。然而,我们遇到了一个障碍。我们使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,不断询问用户是否提供了其他信息。唯一的问题是,我们不知道如何处理错误 我们尝试的是:Java.util.scanner错误处理,java,java.util.scanner,Java,Java.util.scanner,我正在帮助一位朋友解决一个java问题。然而,我们遇到了一个障碍。我们使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,不断询问用户是否提供了其他信息。唯一的问题是,我们不知道如何处理错误 我们尝试的是: do { int reloop = 0; try { number = nextInt(); } catch (Exception e) { System.out.println ("Please enter a number!")
do {
int reloop = 0;
try {
number = nextInt();
} catch (Exception e) {
System.out.println ("Please enter a number!");
reloop ++;
}
} while(reloop != 0);
唯一的问题是,若你们输入的不是数字,那个么这个循环是不确定的
有什么帮助吗?如果执行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()!这就是为什么你会得到一个无限循环
您可以调用并放弃nextLine()
来修复此问题,但更好的方法是使用上面介绍的无异常hasNextInt()
预检查技术。如果数字为非int,异常将弹出,如果不是,重新启动将变为1,循环将退出
int reloop = 0;
do {
try {
number = nextInt();
reloop ++;
} catch (Exception e) {
System.out.println ("Please enter a number!");
}}
while(reloop == 0);
我会使用布尔值
而不是int。如果下一个标记不是int