3

我正在尝试使用双 [] 数组作为参数输出带有 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]);

为什么第一种格式不起作用?据说它适用于字符串就好了。

4

2 回答 2

4

Java 会将您自动装箱double到 a Double,但不会将您自动装箱double[]到 a Double[],因此它不匹配Object[]。结果,Object...您的数组不是被解压缩到可变参数中,而是被视为数组本身——显然,它不能被格式化为双精度。

如果您将数组声明为Double[]而不是double[],则调用format有效。

于 2012-04-20T05:45:15.710 回答
1

它不起作用,因为数组不是双精度的(在 Java 中,数组是一个类,所以在这里它就像一个通用指针)。您需要准确指定将输出的内容,并且您做到了 - 它是%f 格式说明符。ArraySomething[] 不匹配..

有关Java 格式的更多信息,请参见此处和此处 -数组类如何在 Java 中工作?, 对于 Java 数组。

于 2012-04-20T05:32:17.593 回答