You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

输入小数触发java.util.InputMismatchException报错,求问题排查

Scanner输入小数抛出InputMismatchException的原因及解决方法

报错原因

核心问题是区域设置(Locale)的小数分隔符不匹配。Scanner.nextDouble()方法会依据当前JVM的默认Locale解析输入的小数:

  • 若你的系统默认Locale使用逗号(,)作为小数分隔符(例如欧洲多数地区的系统),输入点号(.)格式的x.x小数时,Scanner无法识别该格式,直接抛出InputMismatchException。

解决方法

方法一:强制Scanner使用指定Locale(推荐)

修改代码,让Scanner使用以点号作为小数分隔符的Locale(比如美式英语Locale),这样不管系统默认设置是什么,都能正确解析x.x格式的输入:

import java.util.Scanner;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Scanner cl = new Scanner(System.in).useLocale(Locale.US);
        double a = cl.nextDouble();
        System.out.print(a);
    }
}

方法二:适配系统默认Locale的输入格式

查看系统默认Locale的小数分隔符,按照对应格式输入:

  • 若系统默认用逗号分隔,就输入x,x(比如3,14)而非x.x。这种方式无需修改代码,但需要用户适配系统输入规则。

内容的提问来源于stack exchange,提问作者KATCHAW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:55:25