簡體   English   中英

C#中的數字總和

[英]Digit sum in for loop C#

我寫了一個方法,該方法假設是從用戶那里接收一個數字,然后檢查0到1000之間的數字。然后它應該返回所有數字總和等於所接收數字的數字。
因此,如果我輸入6,則應返回數字6、42、51、33、123等。
自從我花了很長時間以來,我非常感謝您的幫助。

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);
}

我知道“ return(0)”存在問題,但是我不確定該返回什么到底是什么。

您幾乎在那里:唯一剩下的問題是,您正在嵌套的while循環內修改循環計數器i ,這將更改外部循環的工作方式。

您可以通過將i的副本保存在另一個變量(例如ii ,然后在while循環內修改它來解決此問題:

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

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

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我得到以下結果:

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM