首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

逻辑异常

2012-04-25 
逻辑错误?求助Public Class Form1Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

逻辑错误?求助
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相等呢??

热点排行