【发布时间】:2015-02-10 16:43:49
【问题描述】:
我有一个String myString = "%d New Voicemail";
我想为 2 做这个:
String myString = "%d New Voicemail";
System.out.println(String.format(myString, 2));
输出:2 条新语音邮件
我想这样做 5:
String myString = "%d New Voicemail";
System.out.println(String.format(myString, 5));
输出:5 条新语音邮件
我想为 1 做这个:
String myString = "%d New Voicemail";
System.out.println(String.format(myString));
输出:崩溃
预期输出:新语音邮件
如您所见,对于“1”,我只想显示字符串而不进行格式化。如果我只是省略了额外的参数,它就会崩溃。有我不知道的简单解决方案吗?
我可以这样做,但想知道是否有更简单的方法:
int num;
if (num == 1){
System.out.println(myString.subString(3));
} else {
System.out.println(String.format(myString, num));
}
【问题讨论】:
-
当然你可以用
System.out.printf()代替println。但这不会回答你的问题。 -
如果只有一封新的语音邮件,为什么要省略 1?只显示“1 个新语音邮件”不是更容易(同时也是正确的)吗?除非是学术练习,否则看起来你正在努力解决一个不存在的问题。
-
@GiulioFranco 不是学术性的。这是设计团队想要的。不受我控制。我只是在尝试最好的实现方式。
标签: java string-formatting string.format