这是我的扫描仪代码:
import java.util.Scanner;
public class TryDouble {
public static void main(String [] args){
Scanner jin = new Scanner(System.in);
double a = jin.nextDouble();
double b = jin.nextDouble();
double c = jin.nextDouble();
System.out.println(a + b + c);
}
}
Run Code Online (Sandbox Code Playgroud)
输入:0.2 0.5 0.9,我得到:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at TryDouble.main(TryDouble.java:6)
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能消除该错误?
小智 5
这是一个区域设置问题:如果要使用。您可以尝试类似:
package test;
import java.util.Locale;
import java.util.Scanner;
public class TryDouble {
public static void main(String [] args){
Scanner jin = new Scanner(System.in).useLocale(Locale.US);
double a = jin.nextDouble();
double b = jin.nextDouble();
double c = jin.nextDouble();
System.out.println(a + b + c);
}
}
Run Code Online (Sandbox Code Playgroud)
当有人输入双精度值以外的值时,会引发此异常。我尝试输入“a”并能够看到异常。
理想的方法是使用 next() 以字符串形式获取输入,验证它并在不是数字时显示错误消息。
由于 Scanner 未关闭,该示例还存在资源泄漏。下面是如何执行此操作的示例:
public static void main(String [] args){
Scanner jin = null;
try{
jin = new Scanner(System.in);
//logic
}finally{
jin.close();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |