读书人

逻辑异常

发布时间: 2012-04-25 19:32:32 作者: rapoo

逻辑错误?求助
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ean As String = TextBox1.Text
If (TextBox1.Text).Length <> 13 Then '验证是否满足13位数的条件
MsgBox("This is not a legal EAN-13 code", , "Warning!") '提示窗体
End If
TextBox2.Text = CStr(theright(ean))
End Sub
Function theright(ByVal ean As String) As Double
'验证码的计算函数
Dim s1, s2 As Double
s1 = CDbl(Mid(ean, 11, 1) + Mid(ean, 9, 1) + Mid(ean, 7, 1) + Mid(ean, 5, 1) + Mid(ean, 3, 1) + Mid(ean, 1, 1))
s2 = CDbl(Mid(ean, 12, 1) + Mid(ean, 10, 1) + Mid(ean, 8, 1) + Mid(ean, 6, 1) + Mid(ean, 4, 1) + Mid(ean, 2, 1))
Return 10 - ((s2 * 3 + s1) Mod 10)
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Close()
End Sub
End Class

不知道怎么就结果总是不对.计算原理是比如6920174761832,将其中的奇数与偶数分离(最后一位不算).然后将奇数位的和s2*3,再与偶数位的和s1相加.这个结果是96,再除以10,取余数得到6..再10-6=4,即与第13位数相等.整个题目就是验证这个的,只是不知道哪里出了问题,求助

[解决办法]
应该是你的位数弄错了,是从左向右数的,比如在6920174761832中,Mid(ean, 11, 1)就是8。
[解决办法]
你的原理中10-6=4这个4怎么会与第13位的2相等呢??

读书人网 >VB Dotnet

热点推荐