我搜索过,找不到像我的例子一样简单的东西。谁能告诉我为什么我会收到这个错误?
import java.util.Scanner;
public class Shopping {
public static void main(String[] args) {
Scanner keyboard = new java.util.Scanner(System.in);
System.out.println("What is the item name?");
String itemName = keyboard.nextLine();
System.out.println("What is the item price?");
double itemPrice = keyboard.nextFloat();
System.out.println("What is the item quantity?");
double itemQuantity = keyboard.nextFloat();
double total = itemQuantity * itemPrice;
System.out.printf("%d x %s @ $%d Total $%d",itemQuantity,itemName,itemPrice,total);
} //main
} // class Shopping
运行时出错:
java.util.IllegalFormatConversionException: d != java.lang.Double
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
at java.util.Formatter.format(Formatter.java:2520)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at Shopping.main(Shopping.java:13)
我最初将itemQuantity设置为int,但这会引发错误。我认为这是因为不匹配的类型,但在我纠正之后,错误仍然发生。 任何帮助将不胜感激。
答案 0 :(得分:0)
将此更改为
System.out.printf("%f x %s @ $%f Total $%f",itemQuantity,itemName,itemPrice,total);
请注意,%d
代表小数,您可以参考oracle documentation
答案 1 :(得分:0)
%d用于整数,对于float和double,你必须使用%f 为此你得到这种类型的错误。 试试这个。
System.out.printf("%f x %s @ $%f Total $%f",itemQuantity,itemName,itemPrice,total);