带有double数组的Java System.out.format

时间:2012-04-20 05:28:04

标签: java printf

我正在尝试使用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]);

为什么第一种格式不起作用?据说它可以很好地处理字符串。

2 个答案:

答案 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?