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

如何在Java中永久设置Locale,使点为默认小数分隔符?

Java中默认小数分隔符改为点(.)的永久解决方案(无需修改系统区域设置)

主要使用Python,刚接触Java,在Windows系统的IntelliJ IDEA中开发时,输入以点(.)作为分隔符的小数会触发InputMismatchException。已知问题与Locale相关,通过Locale.setDefault修改仅临时生效,希望无需修改Windows区域语言设置,通过环境变量或IDE设置永久将默认小数分隔符设为点,避免为每个脚本添加代码。


最小复现示例

import java.util.Scanner;
public class DecimalError {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter decimal number: ");
        double decimal = scanner.nextDouble();
    }

}

错误信息

C:\Users\XYZ\.jdks\openjdk-20.0.1\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.2\lib\idea_rt.jar=61309:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "D:\Dokumente\Programming\Java for Absolute Beginners\HelloWorld\out\production\HelloWorld" DecimalError
Enter decimal number: 2.5
Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:947)
    at java.base/java.util.Scanner.next(Scanner.java:1602)
    at java.base/java.util.Scanner.nextDouble(Scanner.java:2573)
    at DecimalError.main(DecimalError.java:8)

Process finished with exit code 1

成功执行示例

C:\Users\XYZ\.jdks\openjdk-20.0.1\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.2\lib\idea_rt.jar=61318:D:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.1.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "D:\Dokumente\Programming\Java for Absolute Beginners\HelloWorld\out\production\HelloWorld" DecimalError
Enter decimal number: 2,5

Process finished with exit code 0

解决方案

1. IntelliJ IDEA全局设置(所有项目生效)

  • 打开IDEA,依次点击File → Settings → Build, Execution, Deployment → Build Tools → Maven → Runner(或直接搜索VM Options)
  • 在VM Options输入框中添加:-Duser.language=en -Duser.country=US
  • 保存设置后,所有新建或现有项目运行时都会使用英文Locale,默认小数分隔符为点

2. 单个项目设置(仅当前项目生效)

  • 点击IDEA右上角的运行配置下拉菜单,选择Edit Configurations...
  • 在对应运行配置的VM options栏中添加:-Duser.language=en -Duser.country=US
  • 保存后,仅当前项目的Java程序会使用该Locale

3. 系统环境变量设置(全局所有Java程序生效)

  • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  • 点击「系统变量」区域的「新建」,变量名填JAVA_TOOL_OPTIONS,变量值填-Duser.language=en -Duser.country=US
  • 重启IntelliJ IDEA后生效,所有Java程序(包括命令行运行的)都会默认使用英文Locale

4. 代码层面全局处理(备选)

如果不想修改JVM参数,可以在项目的公共初始化代码中设置一次Scanner的默认Locale:

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

public class GlobalScannerSetup {
    static {
        Scanner.setLocale(Locale.US);
    }
}

将这个类放在项目中,确保它在其他代码之前加载,后续所有Scanner实例都会自动使用US Locale。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:43:28