2017-03-09 83 views
-2

我創建一個程序來評估輸入比如我輸入的5號函數應該能返回,這意味着數:返回一個數的雙重價值

5 => 500 
4 => 400 
6 => 600 
10 => 1000 and so on. 

這是我到目前爲止已完成。

public int NumberEval(int theNumber) 
{ 
    int theResult = 0; 
    switch (theNumber) 
    { 
     case 0: 
      theResult = 1; 
      break; 
     case 1: 
      theResult = 1; 
      break; 
     case 2: 
      theResult = 200; 
      break; 
     case 3: 
      theResult = 300; 
      break; 
     case 4: 
      theResult = 400; 
      break; 
     case 5: 
      theResult = 500; 
      break; 
     case 6: 
      theResult = 600; 
      break; 
     case 7: 
      theResult = 700; 
      break; 
     case 8: 
      theResult = 800; 
      break; 
     case 9: 
      theResult = 900; 
      break; 
     case 10: 
      theResult = 1000; 
      break; 
     case 11: 
      theResult = 1100; 
      break; 
     case 12: 
      theResult = 1200; 
      break; 
     case 13: 
      theResult = 1300; 
      break; 
     case 14: 
      theResult = 1400; 
      break; 
     case 15: 
      theResult = 1500; 
      break; 
     case 16: 
      theResult = 1600; 
      break; 
     case 17: 
      theResult = 1700; 
      break; 
     case 18: 
      theResult = 1800; 
      break; 
     case 19: 
      theResult = 1900; 
      break; 
     case 20: 
      theResult = 2000; 
      break; 
     default: 
      break; 
    } 
    return theResult; 
} 

我的問題是,如果我輸入50,那麼它應該是5000。有沒有辦法來縮短這一方法,因爲我不希望每個項目在switch語句手動編碼?或者甚至是這個數學方程?

+5

乘以100? – Steve

+1

...除非'theNumber == 1'或'== 0',在這種情況下只返回1(除非這是你的問題中的錯字?)。爲了將來的參考,你應該問自己的第一個問題是「我怎麼知道我想要返回?」也就是說,是什麼讓你認爲如果'Number == 9'你應該返回900?如果你這樣做了,並提出「因爲9 * 100 = 900」,這將給你一個暗示,如何解決這個問題,而不用硬編碼每個答案。 – yshavit

+0

你必須使用開關嗎? –

回答

2

爲什麼不是一個簡單的乘法100類似如下:

public int NumberEval(int theNumber) 
{ 
    if(theNumber == 0 || theNumber == 1) 
     return 1; 
    else 
     return theNumber * 100; 
} 

這裏是你working example。你可以簡化這樣的陳述:

return theNumber == 0 || theNumber == 1 ? 1 : theNumber * 100; 
+0

非常感謝你先生,這就是我要找的 – mark26

+0

@ mark26:很高興幫助你的朋友 –

+1

@ mark26歡迎來到SO。您可以點擊空白複選標記來接受此答案。 –

3

這不是輸入* 100的模式嗎?我認爲你可以編寫一個方法接受輸入,並將它多取100.但有一點需要注意的是,當輸入大到足以溢出整數精度時,精度截斷。

+0

你好,謝謝你的提示,但我怎麼能避免它。即時通訊編程新,所以我真的不知道有關整數精度。 – mark26