【问题标题】:Android studio strange warningAndroid工作室奇怪的警告
【发布时间】:2016-10-27 08:43:22
【问题描述】:

我是 Android Studio 的新手,当我在这样的文本中设置一个整数时:

textview.setText(String.format("%d",1));

这段代码给我一个警告:

隐式使用默认语言环境是常见的错误来源:使用 String.format (Locale,...)

将整数放入 .setText 的正确代码是什么?

我在 stackoverflow 上提出了更多问题,但不适用于此。

【问题讨论】:

  • textview.setText(String.valueOf(intValue));textview.setText("1");
  • 同意@sameerasy
  • 你可以试试textView.setText(int_var+"");

标签: java android-studio settext


【解决方案1】:

将整数放入 .setText 的正确代码是什么?

您只需将您的int 转换为String,您可以为此使用Integer.toString(int)

你的代码应该是:

textview.setText(Integer.toString(myInt));

如果您想设置一个固定值,只需使用相应的Stringliteral

所以你的代码可以简单地是:

textview.setText("1");

您收到此警告是因为String.format(String format, Object... args) 将为您的Java Virtual Machine 实例使用默认语言环境,这可能会根据所选格式导致行为发生变化,因为您最终可能会使用格式语言环境依赖。

例如,如果您只是在格式中添加逗号以包含分组字符,则结果现在取决于区域设置,如您在此示例中所见:

System.out.println(String.format(Locale.FRANCE, "10000 for FR is %,d", 10_000));
System.out.println(String.format(Locale.US, "10000 for US is %,d", 10_000));

输出:

10000 for FR is 10 000
10000 for US is 10,000

【讨论】:

  • 那么“%d”在什么情况下有用?
  • 所以我只有在指定语言环境时才能使用 %d?
  • 它只对更复杂的字符串格式有用,而不是只打印原始类型
  • @NicolasFilotto,取决于您的原始类型,如果您不想打印一些具有限制十进制长度的十进制数,这是最简单的,至少我认为 ;)
  • @AxelH 提供的格式已经是特定于上下文的,您甚至可以提供带有整数的格式,但我同意提及它以避免误解很重要
猜你喜欢
  • 2011-11-25
  • 2012-03-04
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
相关资源
最近更新 更多