2017-03-09 74 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