2012-04-20 97 views
3

我使用的是雙[]數組作爲參數試圖輸出與信息System.out.format。這不起作用:爪哇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

Java將autobox你doubleDouble,但它不會autobox你double[]Double[],所以它不匹配Object[]。因此,您的數組不會被解壓縮到Object...可變參數中,您的數組將被視爲數組本身 - 顯然,它不能被格式化爲雙精度型。

如果您將數組聲明爲Double[]而不是double[],則可以調用format

+1

感謝您的幫助!我改變了類型爲'Double []',現在它似乎工作。 – joelises 2012-04-20 06:00:07

1

它不起作用,因爲數組是不是雙(Java中的數組是一類,所以在這裏就像一個普通的指針)。您需要指定究竟什麼都會輸出,你做 - 這是%fformat specifier。 ArraySomething []不匹配。

有關更多關於Java's Formatting和這裏 - How does array class work in Java?,請參見這裏。

+2

[鏈接](http://docs.oracle.com/javase/tutorial/java/data/numberformat.html)「這兩個java.io.PrintStream中方法的語法是相同的:公共的PrintStream格式(字符串格式,對象...參數)「三點操作符應該可選地接受一系列參數,但它在這裏不起作用。我收到轉換錯誤。 – joelises 2012-04-20 05:39:05