临时表的错误

时间:2013-09-20 02:11:12

标签: java

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

Jgrasp给了我这些错误:

  

线程“main”中的异常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)at   java.util.Formatter.format(Formatter.java:2433)at   java.io.PrintStream.format(PrintStream.java:920)at   java.io.PrintStream.printf(PrintStream.java:821)at   TempTable.main(TempTable.java:25) -

我的代码

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 );
       }
    }    
}

1 个答案:

答案 0 :(得分: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 );

强烈建议,为您的循环计数器使用int,而不是double