为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2021-04-29 17:47:07
我们先来看示例代码: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 回答

?
临摹微笑

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()为此,您必须使用获取字符串。


查看完整回答
反对 回复 2021-05-19
  • 1 回答
  • 0 关注
  • 216 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信