Java,商品商店折扣数学错误
该程序的作用是充当一个商店,为相应的项目和数量输入一个编号。问题是,如果您想要三件或更多的商品,您可以在购买时获得10%的折扣,任何小数都应该被截断(保持在int数据类型的整数范围内)。程序将运行,但是折扣不计算,并且始终声明为0,尽管程序将运行。看看Java,商品商店折扣数学错误,java,math,command-prompt,discount,Java,Math,Command Prompt,Discount,该程序的作用是充当一个商店,为相应的项目和数量输入一个编号。问题是,如果您想要三件或更多的商品,您可以在购买时获得10%的折扣,任何小数都应该被截断(保持在int数据类型的整数范围内)。程序将运行,但是折扣不计算,并且始终声明为0,尽管程序将运行。看看 int item, longsword, shortsword, warhammer, ring, potion, itemcost, quantity, discount, totalcost, finalcost; System.o
int item, longsword, shortsword, warhammer, ring, potion, itemcost, quantity, discount, totalcost, finalcost;
System.out.print("Item Number: ");
item = keyboard.nextInt();
final int LONGSWORD = 120;
final int SHORTSWORD = 90;
final int WARHAMMER = 80;
final int RING = 150;
final int POTION = 10;
itemcost = 0;
if (item == 1)
{
itemcost = LONGSWORD;
}
if (item == 2)
{
itemcost = SHORTSWORD;
}
if (item == 3)
{
itemcost = WARHAMMER;
}
if (item == 4)
{
itemcost = RING;
}
if (item == 5)
{
itemcost = POTION;
}
System.out.print("Quantity of Item: ");
quantity = keyboard.nextInt();
totalcost = itemcost * quantity;
System.out.println("Total Cost: " + totalcost);
if (quantity >= 3)
{
discount = totalcost * (1/10);
}
else
{
discount = 0;
}
System.out.println("Discount: " + discount);
您遇到了常见的整数除法问题
1/10
为0,因此折扣将为0。改用这个:
discount = (int) (totalcost * (0.1));
你需要试一试
discount = totalcost * (0.1);
而不是
discount = totalcost * (1/10);
因为1/10将导致0(整数除法)或者像这样改变它
discount = totalcost * (1/10.0);
另外,我建议您将折扣
的类型改为double
,而不是int
,否则您需要按如下方式进行转换:
discount = (int) (totalcost * (0.1));
我之所以说将类型更改为double,是因为折扣可以是小数
,因此最好将其存储在double
中,而不是将其转换为int
在哪一行出现错误,请注意,一旦我将代码更改为折扣=总成本*(0.1);我收到错误:不兼容的类型:可能是从double到int的有损转换,我如何修复它?哎呀,您还需要返回到int
。@katef:-您需要尝试以下操作:discount=(int)(totalcost*(0.1))
@katef:-试试这个:折扣=(整数)(总成本*(0.1))代码>你错过了左边的偏执。OP特别声明他想要“任何小数都应该被截断”@pathfindereite:-是的,我知道。我在最后陈述了我的理由。
discount = (int) (totalcost * (0.1));