为什么添加变量错误?

时间:2014-03-08 01:33:25

标签: java decimal

我正在使用Java但是,它没有正确添加数量。我会给出我的代码部分。

final double taxrate=.08;
Map<String,Integer> Priceproduct= new HashMap<String,Integer>();
Priceproduct.put("shoes",(int) 50.00);      
Priceproduct.put("shirts",(int) 30.00);
Priceproduct.put("shorts",(int) 75.00);
Priceproduct.put("caps",(int) 15.00);
Priceproduct.put("jackets",(int) 100.00);

System.out.print("\n Enter the product: ");
String product=keyboard.nextLine();
System.out.print( "\n Enter the quantity of the product");
int quantity=keyboard.nextInt();

int cost= Priceproduct.get(product)*quantity;
int tax= (int) (cost*taxrate);
System.out.print("\n tax=" +cost*taxrate+"");

int TotalBill= cost+tax;
System.out.print("\nTotal="+cost+ + +tax+"");

当它增加成本和税(这两个是正确的)时,它得到了完全错误的答案。 例如3件衬衫= 90,税收等于7.2,总数为907。

我是否需要使用DecimalFormat或其他?

2 个答案:

答案 0 :(得分:2)

改变这个:

System.out.print("\nTotal="+cost+ + +tax+"");

到此:

System.out.println();
System.out.print("Total=" + (cost + tax));

(问题是+是左关联的,因此在添加时没有括号,"a" + b + c表示("a" + b) + c,它在两个阶段执行字符串连接。)

答案 1 :(得分:0)

当您在字符串旁边执行操作时,Java将执行该操作,就像操作数是字符串一样。

System.out.println()来电中,您不需要重做计算,只需打印变量“tax”和“totalBill”即可。 (这将解决打印'907'的问题)

您将只获得整数值,因为您对所有内容使用int类型。如果你想用小数表示分数,你应该使用类型double