2015-09-27 63 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]得到的結果。