Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,商品商店折扣数学错误_Java_Math_Command Prompt_Discount - Fatal编程技术网

Java,商品商店折扣数学错误

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

该程序的作用是充当一个商店,为相应的项目和数量输入一个编号。问题是,如果您想要三件或更多的商品,您可以在购买时获得10%的折扣,任何小数都应该被截断(保持在int数据类型的整数范围内)。程序将运行,但是折扣不计算,并且始终声明为0,尽管程序将运行。看看

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