String.format导致错误

时间:2013-07-02 02:14:39

标签: scala

我有Scala代码

System.out.println(String.format("%s %6d", "someName", someLong))

和错误:

 overloaded method value format with alternatives:
[error]   (java.util.Locale,java.lang.String,<repeated...>[java.lang.Object])java.lang.String <and>
[error]   (java.lang.String,<repeated...>[java.lang.Object])java.lang.String
[error]  cannot be applied to (java.lang.String, Long, String)
[error]       System.out.println(String.format("%s %6d",  "someName", someLong))

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

说明兰德尔的答案。

如果你超过五十岁,请使用Randall的答案,但如果你不到四十岁或仍然可以穿合身的衬衫,请使用f-interpolator!生命是短暂的。

scala> String.format("%s %6d", "someName", someLong: java.lang.Long)
res8: String = someName      5

scala> val someName = "Bob"
someName: String = Bob

scala> f"${someName} ${someLong}%6d"
res10: String = Bob      5

答案 1 :(得分:2)

您尝试的不起作用的原因是Java代码无法处理Scala的AnyVal类型。

相反,请使用Scala的对应部分:

println("%s %6d".format("someName" someLong))

或者,更简洁:

printf("%s %6d%n", someName, someLong)