Java 双倍乘

Java 双倍乘,java,multiplication,Java,Multiplication,我搜索了一下,没有找到像我的例子那么简单的东西。有人能告诉我为什么我会犯这个错误吗 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?"

我搜索了一下,没有找到像我的例子那么简单的东西。有人能告诉我为什么我会犯这个错误吗

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,但这导致了错误。我认为这是因为不匹配的类型,但在我纠正它之后,错误仍然发生。 任何帮助都将不胜感激。

将此更改为

System.out.printf("%f x %s @ $%f Total $%f",itemQuantity,itemName,itemPrice,total);

请注意,
%d
代表十进制,您可以参考%d代表整数,浮点数和双精度必须使用%f 为此,您将得到这种类型的错误。 试试这个

 System.out.printf("%f x %s @ $%f Total $%f",itemQuantity,itemName,itemPrice,total);

您正在尝试使用
%d
格式化双精度字符,这是数字的格式键。对浮点值使用
%f