注册 登录
编程论坛 VB6论坛

为什么会出现下标越界?

青年刘 发布于 2015-04-29 10:02, 2104 次点击
dim b(12) as string
For m = Asc("a") To Asc("j")
    If m <= Asc(maxchezubianhao) Then
       For j = 0 To 12
         j = (j + 1) Mod 13
                If Jend = j Then
                       Jend = lastfallindex
                       Exit For
               ElseIf Chr(m) = b(j - 1) Then
                     Fallmatrix(i, j - 1) = Chr(m)
                     lastfallindex = j - 1
               End If
       Next j
       m = m + 1
       For n = lastfallindex + 1 To 12
          If Chr(m) = b(n) Then
             Fallmatrix(i, n) = Chr(m)
          End If
       Next n
    i = i + 1
    Else
     Exit For
   End If
   m = m - 1
 Next m
那个 ElseIf Chr(m) = b(j - 1) Then    b(j-1) 为什么会出现下标越界?
5 回复
#2
lianyicq2015-04-29 10:39
For j = 0 To 12
         j = (j + 1) Mod 13
                If Jend = j Then
                       Jend = lastfallindex
                       Exit For
               ElseIf Chr(m) = b(j - 1) Then
                     Fallmatrix(i, j - 1) = Chr(m)
                     lastfallindex = j - 1
               End If
       Next j
以上循环过程中改变了循环变量j,每次next j前,j值逐次为:1 3 5 7 9 11 0 2 4 6 8 10 12.当j=0时b(j-1)当然下标越界
#3
青年刘2015-04-29 11:46
我定义了b(12)  一共13个数,难道不对吗?
#4
lianyicq2015-04-29 11:53
b(12)是b(0)至b(12),是13个.但不会存在b(-1).
运行到j=0时,b(j-1)越界
#5
renxiaoyao362015-04-30 18:35
下标不能低于0,建议加上If j>=1
但是由于你之前有IF语句了,所以建议自行将IF语句的嵌套做下注释
#6
陌上过客2015-12-28 14:16
回复 3楼 青年刘
一共13个数的确没错,但是范围是0到12 而不是13
1