我遇到了一个我正在为学校写的程序的问题。我需要使用Luhn算法验证信用卡号码,但是我在获取算法逻辑正常工作方面遇到了一些困难。我相信我知道问题出在哪里,但我无法修复它。Luhn算法不起作用
我相信这个问题是在这里:
For i = 0 To cardInput.Text.Length - 2 Step -2
Dim x = (i * 2)
If x > 9 Then
x = x - 9
End If
oddTotal += x
Next
'Sum of undoubled digits
For i = 0 To cardLength - 1 Step -2
evenTotal += i
Next
total = oddTotal + evenTotal
checkSum = total
infoOutput.Items.Add("CheckDigit: " & checkDigit)
infoOutput.Items.Add("CheckSum :" & checkSum)
'Verify that the card is valid by the Mod 10 (Lund algoritm)
If checkSum = checkDigit Or checkSum = 0 Then
valid = True
Else
valid = False
End If
如果它的需要,我的项目的其余部分可以看出here
我的代码似乎并没有启动在了最后一位,采取一切其他数字回到起点翻倍。 Step -2运算符在这里不正确吗?我究竟做错了什么?
你似乎没有使用该卡号码数字。 –
我不明白我是如何,但如果我使用此代码来显示选定的数字,它显示罚款在我的列表框。 infoOutput.Items.Add(cardInput.Text.Substring(cardLength -2,1)) 所以我的For循环应该选择数字并利用它们是正确的? –