我尝试使用简单的java.util.Formatter
类示例。
在我看来,它的工作原理与System.out.printf()
.
但是我的简单程序显示出意想不到的结果。
smb 能解释一下为什么吗?
预期在field:的单行名称和此 value 的值。
代码:
class DataHolder {
int i=145;
long l = 789L;
float f = 78.8F;
double d = 34.9;
public String toString() {
StringBuilder sb = new StringBuilder("DataHolder class: \n\n");
Formatter formatter = new Formatter(Locale.US);
sb.append(formatter.format("int field: %d\n", i));
sb.append(formatter.format("long field: %d\n", l));
sb.append(formatter.format("float field: %f\n", f));
sb.append(formatter.format("double field: %f\n", d));
return sb.toString();
}
}
public class Test {
public static void main(String[] args) {
System.out.println(new DataHolder());
}
}
输出:
DataHolder class:
int field: 145
int field: 145
long field: 789
int field: 145
long field: 789
float field: 78.800003
int field: 145
long field: 789
float field: 78.800003
double field: 34.900000
为什么我们可以在这里看到重复的行,其中一些是不正确的。
出了什么问题以及如何正确使用Formatter
?