2016-02-22 122 views
0

我搜索,找不到像我的例子一样简单。任何人都可以告诉我为什么我得到这个错误?运行时,倍增倍数

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

+1

您试图使用'%d'格式化一个double,这是数字的格式键。使用'%f'作为浮点值。 – Vulcan

回答

0

更改为

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

请注意,%d是小数,你可以oracle documentation

+0

谢谢Prasad –

0

%d使用整数参考,对float和double你必须使用%F 此你遇到这种类型的错误。 试试这个。

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