我仍在使用Netbeans 11.1学习Java。
我的问题是,当我尝试运行应显示数字的程序时,我得到了用阿拉伯语打印的数字,这是我的Windows默认语言。
这就是我得到的结果:
我添加了以下行:-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
用英语字母打印没有问题,但是age
和gpa
用阿拉伯数字打印。输出为:
Khalid is ٢٤ years old. Khalid has ٣٫٤٠٠٠٠٠ gpa.
答案 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.
注意: