printf的;线程异常,非法格式转换

时间:2015-11-17 16:30:31

标签: java printf

程序编译正常,但我收到以下运行时错误:

可提供食物来源消化 *******线程“main”中的异常java.util.IllegalFormatConversionException:f!= java.lang.String     at java.util.Formatter $ FormatSpecifier.failConversion(Formatter.java:4302)     at java.util.Formatter $ FormatSpecifier.printFloat(Formatter.java:2806)     at java.util.Formatter $ FormatSpecifier.print(Formatter.java:2753)     在java.util.Formatter.format(Formatter.java:2520)     在java.io.PrintStream.format(PrintStream.java:970)     在java.io.PrintStream.printf(PrintStream.java:871)     在Nutrition.main(Nutrition.java:22)

import java.util.Scanner;

public class Nutrition
{
public static void main(String[] args)
{
    final String HEADING_STR = "%-10s%10s%10s%10s\n";
    final String DATA_STR = "%-15s%,10.1f%,10.1f.0%,10.1f\n";
    double protein1 = 150; // protein in chicken
    double digested1 = 50; // chicken digested
    double protein2 = 120; // protein in beef
    double digested2 = 30; // beef digested
    double availableProtein1, availableProtein2; // protein after digestion

    System.out.printf (HEADING_STR, "Food", "Source", "Digestion", "Available");
    System.out.printf (DATA_STR, "*******", "*******", "*******", "*******");

    availableProtein1 = protein1 - digested1;
    System.out.printf(DATA_STR, "Chicken", protein1, digested1, availableProtein1);
} // end main
} // end Nutrition

1 个答案:

答案 0 :(得分:2)

     final String DATA_STR = "%-15s%,10.1f%,10.1f.0%,10.1f\n"; 
   ... other code
     System.out.printf (DATA_STR, "*******", "*******", "*******", "*******");
在这里传递字符串时,

DATA_STR需要一个String和一堆float个参数