乘以双打

时间:2016-02-22 04:52:59

标签: java multiplying

我搜索过,找不到像我的例子一样简单的东西。谁能告诉我为什么我会收到这个错误?

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

2 个答案:

答案 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);