Netbeans 默认使用逗号。为什么?

Netbeans using comma as default. Why?

大家好, 所以,Netbeans(像大多数 IDE 一样)使用点 (.) 来组织小数位,对吗? 我不知道为什么,但我的 IDE 开始使用逗号 (,) 来组织小数位......甚至控制台中显示的输出也使用逗号。我怎样才能将它改回默认设置并再次开始使用小数位的点?

PS:当我尝试使用点和小数位(例如 4.5)输入数字时,我收到此错误消息:

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
    at EstruturasDeControle.If.main(If.java:16)
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:764)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:711)
    at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:289)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

扫描输入需要逗号而不是句点作为十进制值的分隔符(反之亦然)与所使用的 Locale 直接相关。

可以通过三种方式指定 Locale 来解决您的问题:

  1. 您可以指定在启动 NetBeans 时默认使用的语言环境作为参数:

    --locale <language[:country[:variant]]>

    例如:--locale en:US 代表美式英语,--locale fr:FR 代表法语。

    此设置将仅适用于当前的 NetBeans 会话。

  2. 您可以永久设置 NetBeans 使用的默认语言环境,方法是在您的 NetBeans 安装目录中的文件 etc/netbeans.conf 中指定它:

    • 在任何文本编辑器中打开该文件。
    • 找到包含文本 netbeans_default_options
    • 的行
    • 添加值以指定区域设置的语言和国家/地区。例如,将语言环境设置为美国英语: -J-Duser.language=en -J-Duser.country=US
    • 有关详细信息,请参阅文章 Change UI language to English on Netbeans IDE
  3. 您可以在代码中动态指定要在应用程序级别使用的 Locale。例如,在您的情况下,您可以通过调用 useLocale().

  4. 来设置应用程序 Scanner 使用的语言环境

您的代码代码可能如下所示:

Scanner scanner = new Scanner(System.in);
scanner.useLocale(Locale.US); // US locale, so period is expected for numeric input.
...
scanner.useLocale(Locale.FR); // France locale, so comma is expected for numeric input.

这三种方法都可以解决您的问题,您可以使用其中的任何一种或全部。您的具体需求决定了要使用的那个。