1

私はただの初心者で、どんな助けも非常に高く評価されます。御時間ありがとうございます。

Jgrasp には次のエラーが表示されます。

スレッド「メイン」の例外 java.util.IllegalFormatConversionException: d != java.lang.Doubleat java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3999) で java.util.Formatter$FormatSpecifier.printInteger(Formatter.java) :2709) java.util.Formatter$FormatSpecifier.print(Formatter.java:2661) で java.util.Formatter.format(Formatter.java:2433) で java.io.PrintStream.format(PrintStream.java:920) でjava.io.PrintStream.printf(PrintStream.java:821) で TempTable.main(TempTable.java:25) に –</p>

私のコード

public class TempTable
{
   public static void main(String[] args)
   {

      double cdeg;
      double fdeg;

        System.out.println("Fahrenheit"+"\t"+"Celsius");
        System.out.println("-----------------------");

      for ( cdeg = 0;  cdeg <= 20;  cdeg++) 
        {
                fdeg = 1.8 * cdeg + 32;

            System.out.printf( "    %3d C = %5.1f F\n", cdeg, fdeg );
       }
    }    
}
4

1 に答える 1

3

スタック トレースが示すとおりです。

d != java.lang.Double

printInteger(Formatter.java:2709)

dフォーマット指定子を使用していますが、 double. したがって、double を int にキャストします。

System.out.printf( "    %3d C = %5.1f F\n", (int) cdeg, fdeg );

または浮動小数点書式指定子を使用します。

System.out.printf( "    %3f C = %5.1f F\n", cdeg, fdeg );

または、ループ カウンターにではなくを使用することを強くお勧めします。intdouble

于 2013-09-20T02:15:13.900 に答える