1

我只是一个初学者,任何帮助都会非常感激。谢谢你的时间。

Jgrasp 给了我这些错误:

java.util.Formatter$FormatSpecifier.printInteger(Formatter.java) 线程“main”中的异常 java.util.IllegalFormatConversionException: d != java.lang.Doubleat java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3999) :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 );

或者,最强烈推荐使用 a int,而不是 a double,作为您的循环计数器。

于 2013-09-20T02:15:13.900 回答