Windows默认语言的Netbeans 11.1打印号码

时间:2019-10-05 18:43:38

标签: java netbeans

我仍在使用Netbeans 11.1学习Java。

我的问题是,当我尝试运行应显示数字的程序时,我得到了用阿拉伯语打印的数字,这是我的Windows默认语言。

这就是我得到的结果:

NetBeans output window

我添加了以下行:-J-Duser.language=en -J-Duser.region=US netbeans.conf 文件,但这并不能解决问题。

建议使用另一种解决方案scanner.useLocale(Locale.ENGLISH); 但我不知道如何以及在哪里使用它。这是我的代码:

package lesson02;

public class ProvidedVariablesOneStatement {
    public static void main(String[] args) {
        String name = "Khalid"; name
        int age = 24;
        double gpa = 3.40;
        System.out.printf("%s is %d years old. %s has %f gpa. \n", name, age, name, gpa);
    }
}

name用英语字母打印没有问题,但是agegpa用阿拉伯数字打印。输出为:

Khalid is ٢٤ years old. Khalid has ٣٫٤٠٠٠٠٠ gpa.

1 个答案:

答案 0 :(得分:0)

要使用西方阿拉伯数字在输出中呈现数字,您只需要在应用程序中显式设置Locale即可。

这里是您程序的稍作修改的版本,它首先使用东部阿拉伯数字显示信息,然后使用西部阿拉伯数字显示相同的信息。

package javaapplication18;

import java.text.NumberFormat;
import java.util.Locale;

public class JavaApplication18 {

    public static void main(String[] args) {

        String name = "Khalid";
        int age = 24;
        double gpa = 3.40;

        Locale arLocale = new Locale("ar");
        NumberFormat nf = NumberFormat.getInstance(arLocale);
        System.out.println("Country: " + arLocale.getCountry() + ", Language: " + arLocale.getLanguage());
        System.out.printf("%s is %s years old. %s has %s gpa. \n",
                name, nf.format(age), name, nf.format(gpa));

        Locale usLocale = new Locale("us", "EN");
        nf = NumberFormat.getInstance(usLocale);
        System.out.println("Country: " + usLocale.getCountry() + ", Language: " + usLocale.getLanguage());        
        System.out.printf("%s is %s years old. %s has %s gpa. \n",
                name, nf.format(age), name, nf.format(gpa));
    }
}

这是NetBeans的输出窗口中显示的内容:

Country: , Language: ar
Khalid is ٢٤ years old. Khalid has ٣٫٤ gpa. 
Country: EN, Language: us
Khalid is 24 years old. Khalid has 3.4 gpa. 

注意:

  • 有关语言环境的介绍,请参见Oracle Java Tutorial
  • 有关更多详细信息,请参见Java文档LocaleNumberFormat
  • 您还应该能够在 netbeans.conf 中设置区域设置,但是我选择以编程方式进行设置,以显示动态切换它的效果。
  • 必须将NetBeans中的
  • 输出窗口配置为使用一种字体来支持您用于输出的语言。显然,这对您来说不是问题。