【发布时间】:2014-10-14 19:42:06
【问题描述】:
使用扫描仪时,有没有办法检查用户输入是否符合我们的预期?
假设我想要一个双精度,但用户输入了一个字符串,我该怎么做才能提示用户重新输入双精度值?
如果未输入数字,则使用以下代码会出现 mismatchException。如果输入错误,我不希望程序崩溃。
这是我的代码: 导入 java.util.Scanner;
public class RoundingNumbers {
private double y;
private double x;
public RoundingNumbers(){
double y = 0;
double x = 0;
}
public void getNumber(){
System.out.print("Enter a decimal number: ");
Scanner num = new Scanner(System.in);
x = num.nextDouble();
}
public void roundNum(){
y = Math.floor(x + 0.5);
}
public void displayNums(){
System.out.println("The actual number is: " + x);
System.out.println("The rounded number is: " + y);
}
}
【问题讨论】:
-
在 while 循环中捕获 MismatchException。如果该值有效,则将循环的退出值设置为“true”,在异常捕获块中,将其设置为“false”...
-
@MadProgrammer 由于
Scanner类提供了无需捕获异常即可进行检查的方法,因此我更愿意这样做 -
@BackSlash 因为您处理扫描仪异常或解析器异常,您仍在处理异常...
-
@MadProgrammer 我不是在谈论异常。
Scanner类提供了hasNextDouble()方法,可以使用该方法代替try-catch。你可以使用if(scanner.hasNextDouble()) myDouble = scanner.nextDouble()。没有try-catch这里
标签: java user-input