我一直在寻找一种快速简便的方法,将int格式化为带有两个前导零的字符串。我找到了这个https://stackoverflow.com/a/4377337/47690答案,看起来就像我需要的那样。所以我实现了它
int i = 34; //could be any value but you get the idea
String.format("%03d", i);
但是,Eclipse似乎对于String.format需要Object[]
作为其第二个参数这一事实感到呻吟。这是怎么回事?
答案 0 :(得分:5)
如果要打印i
的值,可以使用:
System.out.printf("%03d", i);
而不是
System.out.println(String.format("%03d", i));
编辑:
此外,我在Java 6中尝试了您的代码,但它无效。所以,我使用了printf()。
喔。抱歉!我清理了项目并且工作正常。
我正在使用Java 6和Eclipse Helios。
答案 1 :(得分:4)
检查项目设置
project -> Properties -> Java Compiler -> Compiler compliance level
你可能在Java 1.4中无法识别vararg
String format(String format, Object ... args)
答案 2 :(得分:1)
以下编译并在Java 7下正常运行(Eclipse Juno SR1对此感到满意):
public class Main {
public static void main(String[] args) {
int i = 42;
System.out.println(String.format("%03d", i));
}
}
错误信息是一个红色的鲱鱼:即使最后一个参数是Object...
(又名Object[]
),自动装箱会处理所有事情。
我怀疑您使用的是过时版本的Java和/或Eclipse,或者Eclipse项目中的编译器合规性级别设置为1.5之前(即使您使用的是1.5 +)。
答案 3 :(得分:0)
String s = String.format(“%04d”,i);
此代码代表一个数字中的4位数字符串所以..如果你使用%04d我会在前面获得两个试验零
虽然int i是一个原语,它的期望对象是它的参数,
其JVM将在内部注意转换为对象数据类型
根据java实现看到这个..
public static String format(String format, Object ... args) {
return new Formatter().format(format, args).toString();
}
动态附加零的示例代码...
import java.text.DecimalFormat; 公共类ArrayTest {
public static void main(String[] args) {
int i = 34; //could be any value but you get the idea
int zeroCount = 2;
String s = String.format("%d", i);
int length = s.length()+zeroCount;
System.out.println(String.format("%0"+length+"d", i));
// second way u can achieve
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumIntegerDigits(length);
System.err.println(decimalFormat.format(i));
}
}
来到System.format的论点,它可能需要无限的不。参数作为第二个参数的varargs对象