我们先来看示例代码: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一样。前两个有什么问题?
1 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
临摹微笑
TA贡献1982条经验 获得超2个赞
因为该构造函数仅使用一种语言。
请注意,它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()为此,您必须使用获取字符串。
添加回答
举报
0/150
提交
取消