2015-09-27 68 views
-3

对于编程类,我必须将一个值范围转换为switch语句而不使用if/else ifs。这里是我需要转换为案件的值:将值转换为switch语句

0到149 ............. $ 10.00
150至299 ......... $ 15.00
300至449 ......... $ 25.00
550至749 .......... $ 40.00
750至1199 ........ $ 65.00
2000及以上..... $ 85.00

我很难找到一种方法来分离值,因为它们是如此接近(如149至150)。

我已经使用了大量的算法,如将输入除以2000,然后乘以10得到一个整数,但它们彼此太接近以创建一个新的情况。

+3

449和550之间的差距是什么?那么1199和2000呢? – dasblinkenlight

+1

'if(){} else if(){}'cascade实际上可能是一个更好的选择,而不是'switch()'语句。 –

回答

1

首先要做的是弄清楚你的粒度。它看起来像你的情况,你不处理小于50的增量。

接下来,将每个范围转换为数字除以增量(即50)所产生的整数范围。对你来说,这将意味着

0, 1, 2 --> 10 
3, 4, 5 --> 15 
6, 7, 8 --> 25 
... // And so on 

这映射到一个非常简单的switch声明。

注:这也映射到值的数组,像这样:

10, 10, 10, 15, 15, 15, 25, 25, 25, ... 

现在,你可以通过做array[n/50]得到的结果。