当我输入double时,nextDouble()会抛出异常 [英] nextDouble() throws an exception when I enter a double

查看:231
本文介绍了当我输入double时,nextDouble()会抛出异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import java.util.*;

class Averager
{
    public static double unlimited()
    {
        int count = 0;
        double sum = 0;
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext())
        {
            double d = scan.nextDouble();
            sum += d;
            count++;
        }
        double ave = sum/count;
        return ave;
    }

    public static void main(String[] args) {
        System.out.println(unlimited()+"\n");
    }
}

使用整数时没有错误但如果我使用带有点的数字会出现错误。

There is no error when I use integers but if I use numbers with point in it a error appears.

$ javac Averager.java; java Averager
0.5
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextDouble(Scanner.java:2387)
    at Averager.unlimited(Averager.java:12)
    at Averager.main(Averager.java:21)

据我所知,0.5应该由double覆盖。如果不是,请有人纠正我。

To my best understanding 0.5 should be covered by double. If not please can someone correct me.

推荐答案

它可能依赖于语言环境。在瑞典,十进制数字例如写为0.5。

It might be locale dependent. Decimal numbers are e.g written as 0,5 in Sweden.

更改代码,使其显示为:

Change your code so that it says e.g.:

Scanner scan = new Scanner(System.in);
scan.useLocale(Locale.US);

这篇关于当我输入double时,nextDouble()会抛出异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆