我正在使用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或其他?
答案 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
。