我对此并不陌生,但这来自用户选择要生成多少个数字然后输入其起始数字范围的表格,代码应从该数字中获取校验码,然后在其中创建其他数字类似时尚
private void button1_Click(object sender, EventArgs e)
{
using (StreamWriter objWriter = new StreamWriter("C:\\temp\\Test.txt"))
{
int numpins = int.Parse(textBox1.Text); //creates a number counter for input
string basepin = textBox2.Text; //user is going to input how many numbers to create
int pinlength = basepin.Length;
string formatspecifier = "{0:d" + pinlength.ToString() + "}";
long pinnumber = long.Parse(basepin);
for (int d = 0; d < numpins; d++)
{
GetCheckDigit(dig);//Calling the function here
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; //the error is here (digits[i])
if (result)
{
num *= 2;
if (num > 9)
num -= 9;
}
sum += num;
result = !result;
}
if ((sum % 10) == 0)
{
return "0";
}
return (10 - (sum % 10)).ToString();
}
.?
运算符,只检查方法开始时dig
是否为空。int?
实际上是与int
不同的类型。 int?
实际上是Nullable<Int32>
的别名,而int
是Int32
的别名。区别在于int?
是引用类型,可能是null
,但int
是不能是null
的值类型。