为什么Locale(String)构造函数不能在Java中正常工作?

我们先来看示例代码:


Locale l1 = new Locale("fr_FR");

Locale l2 = new Locale("fr-FR");

Locale l3 = new Locale("fr_fr");

Locale l4 = new Locale("fr-fr");

Locale l5 = new Locale("fr", "FR");

Locale l6 = new Locale("fr", "fr");

Locale l7 = Locale.FRANCE;


System.out.println(l1.getDisplayCountry());

System.out.println(l2.getDisplayCountry());

System.out.println(l3.getDisplayCountry());

System.out.println(l4.getDisplayCountry());


System.out.println(l5.getDisplayCountry());

System.out.println(l6.getDisplayCountry());

System.out.println(l7.getDisplayCountry());



System.out.println("----------------");



NumberFormat nf1 = NumberFormat.getInstance(l1);

NumberFormat nf2 = NumberFormat.getInstance(l2);

NumberFormat nf3 = NumberFormat.getInstance(l3);

NumberFormat nf4 = NumberFormat.getInstance(l4);

NumberFormat nf5 = NumberFormat.getInstance(l5);

NumberFormat nf6 = NumberFormat.getInstance(l6);

NumberFormat nf7 = NumberFormat.getInstance(l7);


System.out.println(nf1.format(12345.678));

System.out.println(nf2.format(12345.678));

System.out.println(nf3.format(12345.678));

System.out.println(nf4.format(12345.678));

System.out.println(nf5.format(12345.678));

System.out.println(nf6.format(12345.678));

System.out.println(nf7.format(12345.678));

我在Locale(String)这里测试构造函数,因为format()方法的结果在我的应用程序中是错误的。我使用了与第一行l1相同的方式,但这在我的台式PC和android手机上均不起作用。确切地说,它可以与Android TTS API配合使用,但在其他所有功能上均无法正常运行。如果您看到上面的代码,则只有后三个l5,l6和l7可以在Windows和Android上正常工作。


我没有收到任何错误或异常消息,但是 l1,l2,l3和l4的getDisplayCountry()返回什么都不返回,而nf1,nf2,nf3,nf4的format()返回则与Locale.US一样。


前两个有什么问题?


HUH函数
浏览 217回答 1
1回答

临摹微笑

因为该构造函数仅使用一种语言。请注意,它Locale具有3个构造函数:Locale(String language)Locale(String language, String country)Locale(String language, String country, String variant)这意味着有效的调用是:new Locale("fr")new Locale("fr", "FR")您也可以使用以下Locale.forLanguageTag(String languageTag)方法:Locale.forLanguageTag("fr-FR") // must use '-' as separator没有Locale从"fr_FR"字符串(带有'_'分隔符)中获取a的方法,这意味着返回的字符串toString()不能用于重新创建Locale。toLanguageTag()为此,您必须使用获取字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java