2015-04-04 148 views
0

我寫了一個方法,它假設從用戶收到一個數字,然後檢查數字從0到1000.然後它應該返回所有數字,其數字總和等於接收的數字。
因此,如果我輸入6,它應該返回像6,42,51,33,123等數字
我真的很感謝幫助,因爲我一直在這裏住了一段時間。for循環C中的數字和#

public static double number() { 
    Console.WriteLine("Enter your number! "); 
    string enter = Console.ReadLine(); 
    double x = Convert.ToDouble(enter);   
    for (int i = 0; i < 1000; i++) { 
     double r; 
     double sum = 0; 
     while (i != 0) { 
      r = i % 10; 
      i = i/10; 
      sum = sum + r; 
     } 
     if (sum == x) { 
      Console.WriteLine(i + " "); 
     } 
    } 
    return(0); 
} 

我意識到「返回(0)」存在問題,但我不完全確定它應該返回的是什麼。

回答

1

我建議試圖做這樣的事情:

public static IEnumerable<int> number() 
{ 
    Console.WriteLine("Enter your number!"); 
    string enter = Console.ReadLine(); 
    int digitSum = int.Parse(enter); 
    foreach (var n in Enumerable.Range(0, 1000)) 
    { 
     if (n.ToString().ToCharArray().Sum(c => c - '0') == digitSum) 
     { 
      yield return n; 
     } 
    } 
} 

當我運行這一點,進入6然後我得到這樣的結果:

result

+0

謝謝你,這是有幫助的...我最終將你的一些建議應用於我自己的方法,結果非常好。 謝謝!:) – user2956514 2015-04-05 09:57:00

1

你就要成功了:剩下的唯一問題是,你正在修改的嵌套循環while,這改變了外環的工作裏面的循環計數器i

您可以通過在另一個變量,比如說節約i副本,在ii,並修改它的while循環中,而不是解決這個問題:

double r; 
double sum = 0; 
int ii = i; 
while (ii != 0) { 
    r = iCopy % 10; 
    ii /= 10; 
    sum = sum + r; 
}