程序编译正常,但我收到以下运行时错误:
可提供食物来源消化 *******线程“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
答案 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
个参数