无法弄清楚为什么我的函数没有被调用

时间:2020-05-12 16:06:05

标签: c#

不确定stackoverflow问题如何工作,但是我试图to带我以前的问题。

我已经摆脱了所有错误,并且dig不再为null,因为我实际上需要它具有一个值,并且我意识到早些时候在人们的帮助下,但现在我的函数没有被调用。

我想念什么?

在我的代码(public string dig = default;)的早期定义了“挖土”

private void button1_Click(object sender, EventArgs e)
{
    using (StreamWriter objWriter = new StreamWriter("C:\\temp\\Test.txt"))
    {
        int numpins = int.Parse(textBox1.Text);
        string basepin = textBox2.Text;
        int pinlength = basepin.Length;
        string formatspecifier = "{0:d" + pinlength.ToString() + "}";
        long pinnumber = long.Parse(basepin);

        for (int d = 0; d < numpins; d++)
        {
            dig = basepin;
            if (dig == null)
            {
                throw new Exception("null value not allowed");
            }
            else
            {
                GetCheckDigit(dig);
            }

            basepin = string.Format(formatspecifier, pinnumber);
            objWriter.WriteLine(basepin);
            pinnumber++;
        }

        objWriter.Close();
    }
}

这是我的功能

private static string GetCheckDigit(string dig)
{
    var sum = 0;
    var result = true;
    var digits = dig.ToCharArray();

    for (int i = digits.Length - 1; i >= 0; i--)
    {
        var num = digits[i] - 48;
        if (result)
        {
            num *= 2;
            if (num > 9)
                num -= 9;
        }
        sum += num;
        result = !result;
    }

    if ((sum % 10) == 0)
    {
        return "0";
    }

    return (10 - (sum % 10)).ToString();
}

1 个答案:

答案 0 :(得分:0)

除非numpins小于0或basepin为null,否则将调用GetCheckDigit(dig)
如果您的意思是它不向屏幕输出任何东西,那是因为 GetCheckDigit(dig)不会在屏幕上输出任何内容,只会返回字符串。