我正在尝试使用double []数组作为参数,使用System.out.format输出信息。这不起作用:
out.format("New dimensions:\n" +
"Length: %f\n" +
"Width: %f\n\n",
doubleArray);
然而,这样做:
out.format("New dimensions:\n" +
"Length: %f\n" +
"Width: %f\n\n",
doubleArray[0], doubleArray[1]);
为什么第一种格式不起作用?据说它可以很好地处理字符串。
答案 0 :(得分:4)
Java会将您的double
自动停靠到Double
,但它不会将您的double[]
自动停靠到Double[]
,因此它与Object[]
不匹配}。因此,您的数组不会被解压缩到Object...
varargs中,而是被视为数组本身 - 显然,它不能被格式化为double。
如果您将数组声明为Double[]
而不是double[]
,则对format
的调用有效。
答案 1 :(得分:1)
它不起作用,因为数组不是double(在Java中,数组是一个类,所以它就像一个通用指针)。你需要指定完全将输出什么,你做了 - 它是%f
format specifier。 ArraySomething []不匹配..
有关Java数组的更多信息,请参阅此处Java's Formatting和此处 - How does array class work in Java?。