Java中的运费计算器,得出错误的数字
我是Java新手,我们正在做一个基于不同重量和距离的运费计算器。我们正在练习if-else语句,但我遇到了一个无法解决的问题。 当我计算不同的重量和距离时,我得到了错误的答案。我认为这与我的数学有关,我似乎无法让程序为距离增加下一笔费用,因为它没有使用剩余部分。请帮助我理解这一点Java中的运费计算器,得出错误的数字,java,calculator,shipping,Java,Calculator,Shipping,我是Java新手,我们正在做一个基于不同重量和距离的运费计算器。我们正在练习if-else语句,但我遇到了一个无法解决的问题。 当我计算不同的重量和距离时,我得到了错误的答案。我认为这与我的数学有关,我似乎无法让程序为距离增加下一笔费用,因为它没有使用剩余部分。请帮助我理解这一点 public class ShippingCharges { private double weight; private double miles; public ShippingCharges (double
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之前复制了代码,我想我复制了。非常感谢你,我我将尝试使用模数,但我对这些也不太了解。谢谢你的帮助!!!