简单的编码问题

时间:2014-10-04 14:47:59

标签: java

在拉赫马尼亚(Rahmania)的国家,邮寄信件的费用为40西纳(s),最多30克。在30克到50克之间,它是55个鼻窦。在50克到100克之间,它是70个鼻窦。超过100克,每增加50克(或其中一部分)需要70西纳加额外25西纳斯。例如,101克将花费70 + 25 = 95个sinas。 149克也将花费95西纳斯,因为这两种包装仅使用前100克超过100克。编写一个程序,提示用户提供质量,然后给出邮寄具有该质量的信件的费用。

这是一个问题,而我唯一不知道该怎么办的部分是最后一部分,每增加50克就增加25个sinas。

有人可以告诉我如何编写这部分代码吗?

我使用netbeans btw。

Scanner input = new Scanner(System.in);
double l;
l = input.nextInt();
x = l >= 100 / 50 * 25 + 70;
if (l <= 30) {
    System.out.println("40 Sinas");
}
if (l > 30 && l < 50) {
    System.out.println("55 Sinas");
}
if (l > 50 && l < 100) {
    System.out.println("70 Sinas");
}
if (l >= 100) {
    System.out.println("");
}

这是代码的重要部分。如你所见,我在最后一部分需要帮助。

2 个答案:

答案 0 :(得分:0)

解决方案:

Scanner input = new Scanner(System.in);
int l; // it should be int if read int
l = input.nextInt();
if (l <= 30) {
    System.out.println("40 Sinas");
}
if (l > 30 && l < 50) {
    System.out.println("55 Sinas");
}
if (l > 50 && l < 100) {
    System.out.println("70 Sinas");
}
if (l >= 100) {
    System.out.println(((((l - 100) / 50) + 1) * 25) + 70);
}

答案 1 :(得分:0)

我只是想指出,Krayo的解决方案存在一个主要问题。如果重量值恰好为100,那么使用该计算,您实际上将向客户收取额外的25个sinas。这是由计算的+ 1部分引起的。

如果weight为100,则100以上50克间隔的数量为0(weight - 100 = 0)。因此,客户不应该收取任何费用,因为问题的措辞是超过100克...... 。但是,因为您在执行额外费用计算之前添加了1,所以客户不必要地额外收取25个Sinas。

相反,为了确保正确的金额以及所有其他情况,我会改用Math.ceil(double)方法。此方法将值舍入到最接近的整数。例如,5.2变为6.0,5.0仍为5.0。

所以你的计算看起来就像这样:

int cost = (int) (Math.ceil((weight - 100) / 50.0f) * 25) + 70;

请注意,我们需要使用浮点值来确保最终得到小数值。由于Math.ceil返回一个double,我们只需将其强制转换为整数。

这是一个示例程序来证明这一点:

public class CalculationTesting {

    public static void main(String[] args){
        int weight = 100;

        int good_cost = (int) (Math.ceil((weight - 100) / 50.0f) * 25) + 70;
        int bad_cost = ((((weight - 100) / 50) + 1) * 25) + 70;

        System.out.println("Weight = " + weight + "g");
        System.out.println("Good cost calculation = $" + good_cost);
        System.out.println("Bad cost calculation = $" + bad_cost);
    }
}

您可以将weight值更改为实验。

哪个输出:

  

重量= 100g
  良好的成本计算= 70美元   不良成本计算= 95美元