2012-04-20 18 views
3

double []配列を引数として使用してSystem.out.formatで情報を出力しようとしています。これは動作しません:Java System.out.format double array

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があなたのdoubleDoubleにしAutoBoxのだろうが、それはあなたのdouble[]Double[]にAutoBoxのではないだろう、それはObject[]と一致していません。その結果、varargsに展開されるのではなく、配列は配列自体として扱われます。これは、明らかにdoubleとしてフォーマットすることはできません。

double[]の代わりにDouble[]と指定すると、formatが呼び出されます。

+1

ご協力ありがとうございます!私は型を 'Double []'に変更しました、そして今はうまくいくようです。 – joelises

1

配列が二重ではないため(Javaでは配列はクラスなので、ここでは一般的なポインタのようになります)、機能しません。 を正確にと指定する必要があります。実行したのは%fformat specifierです。 ArraySomething []が一致しません。

Java's Formattingここをクリックしてください。How does array class work in Java?、Java配列用です。

+2

[リンク](http://docs.oracle.com/javase/tutorial/java/data/numberformat.html)これらの2つのjava.io.PrintStreamメソッドの構文は同じです。public PrintStream format(String format、Object ... args) "3ドット演算子はオプションで引数の配列を取りますが、ここでは機能しません。変換エラーが発生します。 – joelises