当我输入一个double时,nextDouble()会引发InputMismatchException [英] nextDouble() throws an InputMismatchException when I enter a double

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

问题描述

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应该加倍.如果没有,请有人纠正我.

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()会引发InputMismatchException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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