如何在Java中创建运费计算器

时间:2012-01-26 02:26:49

标签: java if-statement calculator

我正在创建一个计算运费的计算器。代码如下:

class ShippingCalc {
    public static void main(String[] args) {
        int weight = 30;

        if (weight < 10) {
            System.out.println("Shipping costs $1.");
        }
        else if (weight < 20) {
            System.out.println("Shipping costs $2.");
        }
        else {
            System.out.println("Shipping costs $3.");
        }
    }
}

这一切都很棒,但我想创建一个可以根据已经设定的值进行计算的计算器。例如,有些东西说:

if (weight < 250) {
   // print("Shipping cost is $1);
} else if (weight < 499) {
   // print("Shipping cost is $2);
} else if (weight < 749) {
   // print...etc and it keeps going 

这将基于用户输入,这就是为什么我不希望已经有如上所述的任何约束。是否有可能用Java制作这样一个计算器,无论重量多少,它都会适当地计算运费并给出答案。

如果是,那我该如何解决呢?

2 个答案:

答案 0 :(得分:4)

首先,您需要一个公式或表来计算运费。例如,&#34;运费是每10磅体重1美元。

然后,你把重量放在那个公式中。

System.out.println("Shipping cost is $" + (int)(weight/10));

如果您希望公式更复杂,可以执行以下操作:

if (weight < threshold1) // price is first level
// or, if you like, you can even do a calculation here
else if (weight < threshold2) // price is second level

用户可以定义threshold1threshold2 变量的值

这些级别可以有无限数量:

// "thresholds" is a sorted array of the weights at which prices change
int[] thresholds = new int[num_thresholds];
for (int checking = 0; checking < thresholds.length; checking++) {
    if (weight < thresholds[checking]) // price is prices[checking]
}

欢迎来到精彩的计算机编程世界!

答案 1 :(得分:1)

如果成本的权重遵循公式,你应该用它来计算成本(一点代数从不伤害任何人)。

如果权重与成本分配是任意的,您可以使用权重作为关键字来创建NavigableMap,并将费用作为值。

然后您可以使用NavigableMap<K, V>.lowerEntry(K)找到低于给定体重的最高体重。

示例

public static Integer findCost(Integer weight, 
        NavigableMap<Integer, Integer> costMap){
    Map.Entry<Integer, Integer> cost;
    cost = costMap.lowerEntry(weight);
    if(cost == null){
        cost = costMap.firstEntry();
    }
    return cost.getValue();
}

使用地图的好处是,如果您使用TreeMap作为NavigableMap的实现,则您的查找平均为O(log n)。