我的程序太长了。我想用循环方法缩短它

我想从我的生日中找到一个幸运数字,例如:1985 年 6 月 7 日。我的生日幸运数字 1+9+8+5+6+7=36 >> 3+6 = 9。我的幸运数字是 9。我试图编码。我在代码中使用了 4 次。我想缩短它,我想得到任意长度数字的数字和。如何编码?


C#


private void btn_lucky_Click(object sender, EventArgs e)

        {

            string Bday = dateTimePicker1.Text.Replace("-", "");



        int Bnumber = int.Parse(Bday);




        int a1 = Bnumber, sum1 = 0, b1;



        while (a1 != 0)

        {

            b1 = a1 % 10;

            sum1 = sum1 + b1;

            a1 = a1 / 10;

        }



        txt_lucky.Text = sum1.ToString();


        if (sum1 < 10)

        {

            txt_lucky.Text = sum1.ToString();

        }


        int a2 = sum1, sum2 = 0, b2;


        if (sum1 > 9)

        {

            while (a2 != 0)

            {

                b2 = a2 % 10;

                sum2 = sum2 + b2;

                a2 = a2 / 10;

            }

            txt_lucky.Text = sum2.ToString();

        }


        int a3 = sum2, sum3 = 0, b3;

        if (sum2 > 9)

        {

            while (a3 != 0)

            {

                b3 = a3 % 10;

                sum3 = sum3 + b3;

                a3 = a3 / 10;

            }

            txt_lucky.Text = sum3.ToString();

        }



    }


温温酱
浏览 73回答 1
1回答

LEATH

这是递归的一个很好的候选者,如果你创建一个返回与其输入相同类型的输出的函数,你就可以这样做。它会重复自己,直到它以一位数字结束。public static string LuckyNumber(string date) // "06/07/1985"{&nbsp; var result = (date ?? "")&nbsp; &nbsp; &nbsp; &nbsp;// in case date is null&nbsp; &nbsp; .ToCharArray()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ['0','6','/','0','7','/','1','9','8','5']&nbsp; &nbsp; .Where(char.IsNumber)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ['0','6','0','7','1','9','8','5']&nbsp; &nbsp; .Select(char.GetNumericValue) // [0,6,0,7,1,9,8,5]&nbsp; &nbsp; .Sum()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; 36&nbsp; &nbsp; .ToString();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // "36"&nbsp; if (result.Length == 1) return result; //"36" is not 1 digit, so...&nbsp; return LuckyNumber(result);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //repeat the above with "36"}执行:string date = "06/07/1985";var luckyNumber = LuckyNumber(date);System.Console.WriteLine(luckyNumber);小提琴: https ://dotnetfiddle.net/5M7Ozv
打开App,查看更多内容
随时随地看视频慕课网APP