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

Java Scanner#nextDouble解析5.2抛出InputMismatchException问题问询

根因分析

Scanner#nextDouble()方法默认采用JVM当前的系统区域设置(Locale)解析数字,部分区域的标准小数分隔符为逗号,而非点.,输入5.2不符合对应区域的数字格式规则,因此触发InputMismatchException,整数无小数分隔符所以可以正常解析。

修复方案

可任选以下任意一种方式解决:

  • 方案1:强制指定Scanner使用支持点作为小数分隔符的区域设置
    初始化Scanner后新增一行配置即可,需要导入java.util.Locale包:
    Scanner sc = new Scanner(System.in);
    sc.useLocale(Locale.US);
    
  • 方案2:适配当前系统的输入规则,输入小数时用逗号替换点,比如输入5,2即可正常识别
  • 方案3:先以字符串形式读取输入,统一替换分隔符后再转为double类型:
    String inputStr = sc.next();
    double num = Double.parseDouble(inputStr.replace(',', '.'));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:42:01