使用しようとしましprintf
たが、予期しないエラーが発生しました。
このコードの欠点は何ですか:
System.out.printf("The date is %d/%d/%d", month,day,year);
month
日付とを出力したいのですがday
、year
は二重変数です。
使用しようとしましprintf
たが、予期しないエラーが発生しました。
このコードの欠点は何ですか:
System.out.printf("The date is %d/%d/%d", month,day,year);
month
日付とを出力したいのですがday
、year
は二重変数です。
Formatterのドキュメントによると、%d
は整数値の変換であり、doubleでは機能しません。それらを整数に変換する必要があります。とにかく、なぜ月、日、年を浮動小数点数として表すのですか?を使用し、日付値に適切なフォーマッターDate
を使用する方がはるかに良いでしょう。
これらの値にdoubleを使用する必要がある場合は、%f
の代わりに使用する必要があります%d
。
Cのsprintfと同様に、文字列は静的メソッドを使用してフォーマットできますString.format
。
// Format a string containing a date.
import java.util.Calendar;
import java.util.GregorianCalendar;
import static java.util.Calendar.*;
Calendar c = new GregorianCalendar(1995, MAY, 23);
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);
// -> s == "Duke's Birthday: May 23, 1995"
修正されたコード
System.out.printf("The date is %f/%f/%f", month,day,year);