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

如何修改VSCode默认设置,使scanner.nextDouble()识别<.>作为小数点

解决Scanner.nextDouble()仅接受逗号作为小数点的问题

问题根源在于Scanner.nextDouble()的小数分隔符规则依赖JVM的区域设置,而非VSCode的界面语言设置,所以修改VSCode区域设置无法解决问题。以下是三种可行的解决方法:

方法1:在代码中显式指定Locale

直接在创建Scanner时强制使用英文区域(以.作为小数点),代码示例:

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

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
        System.out.print("输入小数:");
        double input = scanner.nextDouble();
        System.out.println("结果:" + input);
        scanner.close();
    }
}

这样Scanner会按照英文区域的格式解析输入,支持.作为小数点。

方法2:通过JVM启动参数全局设置

修改VSCode的launch.json配置,添加JVM参数强制指定区域:

  1. 打开VSCode的「运行和调试」面板,点击「创建launch.json文件」(若已有则直接编辑)
  2. 在对应配置项中添加vmArgs参数:
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "Launch Main",
            "request": "launch",
            "mainClass": "你的主类路径",
            "vmArgs": "-Duser.language=en -Duser.region=US"
        }
    ]
}

此方法会让整个JVM进程使用英文区域设置,所有Scanner实例都会遵循该规则。

方法3:修改系统区域设置

如果希望全局生效(所有Java程序都使用.作为小数点),可以修改系统的区域格式:

  • Windows:设置 → 时间和语言 → 语言和区域 → 其他日期、时间和区域设置 → 区域 → 其他设置 → 数字选项卡,将小数点符号改为.
  • macOS:系统设置 → 通用 → 语言与地区 → 区域格式,选择「美国」
  • Linux:通过系统设置将区域格式改为en_US.UTF-8

内容的提问来源于stack exchange,提问作者Seng Gie Chung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:22:41