Java中的运费计算器,得出错误的数字

Java中的运费计算器,得出错误的数字,java,calculator,shipping,Java,Calculator,Shipping,我是Java新手,我们正在做一个基于不同重量和距离的运费计算器。我们正在练习if-else语句,但我遇到了一个无法解决的问题。 当我计算不同的重量和距离时,我得到了错误的答案。我认为这与我的数学有关,我似乎无法让程序为距离增加下一笔费用,因为它没有使用剩余部分。请帮助我理解这一点 public class ShippingCharges { private double weight; private double miles; public ShippingCharges (double

我是Java新手,我们正在做一个基于不同重量和距离的运费计算器。我们正在练习if-else语句,但我遇到了一个无法解决的问题。 当我计算不同的重量和距离时,我得到了错误的答案。我认为这与我的数学有关,我似乎无法让程序为距离增加下一笔费用,因为它没有使用剩余部分。请帮助我理解这一点

public class ShippingCharges {

private double weight;
private double miles;


public ShippingCharges (double w, double m)
{
    weight = w;
    miles = m;
}


public double getShippingCharges()
{
    double charges;
    if (weight <= 2.0)
    { charges = (1.10 * miles / 500);
    }
    else if ((weight > 2.0) && (weight <= 6.0))
    {
        charges = (2.20 * (miles  / 500 ));
    }
    else if ((weight > 6.0) && (weight <=10.0))
    {
        charges = (3.70 * (miles / 500 )); 
    }
    else 
    {
        charges = (4.80 * miles  / 500);
    }
    return charges;

    }
}
公共类运输费{
私人双倍重量;
私人双英里;
公共运输费(双倍w,双倍m)
{
重量=w;
英里=米;
}
公共双收运费()
{
双重收费;

如果(重量2.0)&(重量6.0)&&(重量,根据您所说的,我理解问题在于您没有将英里数/500结果四舍五入,请尝试以下方法:

public double getShippingCharges()
{
    double charges;
    if (weight <= 2.0)
    { charges = (1.10 * Math.ceil(miles / 500));
    }
    else if ((weight > 2.0) && (weight <= 6.0))
    {
        charges = (2.20 * Math.ceil(miles  / 500 ));
    }
    else if ((weight > 6.0) && (weight <=10.0))
    {
        charges = (3.70 * Math.ceil(miles / 500 )); 
    }
    else 
    {
        charges = (4.80 * Math.ceil(miles  / 500));
    }
    return charges;

    }
public-double-getShippingCharges()
{
双重收费;

如果(重量2.0)和(重量6.0)和(重量你期望得到什么?你在哪里使用它?你能给出一个期望输出的例子,你能得到什么吗?好的,它是这样的,每运输500英里,它应该再加上一个,比如说,2.20英里。如果英里数是,比如说,750英里,它似乎只是在计算前500英里,而不是再加上2.2英里0,因为它超过500英里。可能是一个双精度问题-你真的应该使用BigDecimal来赚钱。好吧,它是这样的。如果我输入9.5的重量和750英里,我的输出是5.55。但它应该是7.40。每500英里的运费不是按比例计算的。550磅的2磅包裹将是2.20。我尝试了该代码,它在9.5 po上工作750英里的unds,但550英里的2磅包裹是2.00而不是2.20。我以前没有看过Math.ceil。请你解释一下这是什么,以便我知道以后使用。谢谢。你确定不是2.2吗?应该是。也许你在我编辑ParentesiEP之前复制了代码,我想我复制了。非常感谢你,我我将尝试使用模数,但我对这些也不太了解。谢谢你的帮助!!!