使用带有效值的Scanner#nextDouble的InputMismatchException

时间:2015-12-11 14:56:49

标签: java

这是我的扫描仪代码:

async

输入: 0.2 0.5 0.9 ,我得到了:

NullReferenceException

如何删除该错误?

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

当有人输入除double之外的其他内容时,抛出此异常。我试着进入' a'并且能够看到异常。

理想的方法是使用next()将输入作为String,验证它并显示错误消息(如果它不是数字)。

由于Scanner未关闭,该示例也存在资源泄漏。以下是如何做到这一点:

public static void main(String  [] args){
        Scanner jin = null;
        try{
            jin = new Scanner(System.in);
            //logic
        }finally{
            jin.close();
        }
    }