有关VB下标越界的问题(头都大了)
来源:百度知道 编辑:UC知道 时间:2024/09/19 15:57:16
Private Sub Form_click()
Dim a(6) As Integer, i As Integer
For i = 1 To 6
a(i) = InputBox("请输入数值")
Next i
For Each c In a()
Call he(a)
Next c
End Sub
Private Sub he(x() As Integer)
For i = 1 To 6
For j = i To 5
If x(i) < x(j + i) Then
t = x(i)
x(i) = x(j + 1)
x(j + 1) = t
End If
Next j
Next i
End Sub
提示说下标越界,但是就是不知道为什么。各位大大看看啊。
Dim a(6) As Integer, i As Integer
For i = 1 To 6
a(i) = InputBox("请输入数值")
Next i
For Each c In a()
Call he(a)
Next c
End Sub
Private Sub he(x() As Integer)
For i = 1 To 6
For j = i To 5
If x(i) < x(j + i) Then
t = x(i)
x(i) = x(j + 1)
x(j + 1) = t
End If
Next j
Next i
End Sub
提示说下标越界,但是就是不知道为什么。各位大大看看啊。
不要乱说。。。
dim a(6), 在默认情况下 a(0)到a(6)都可用,也就是说是一个7元数组
LZ的问题出在这里:
For i = 1 To 6
For j = i To 5
If x(i) < x(j + i) Then '<-这行
x也就是你传入的a,最大下标只有6
可是你想,当i循环到2的时候,j循环到5的时候,i+j等于7 大于6了,所以下标越界
LZ最好说明你的这个程序的目的,是排序吗?如果是排序的话,还存在其它的错误
毛病出在这句,在Private Sub he(x() As Integer) 里面
If x(i) < x(j + i) Then
j+i肯定会大于你给定的6
所以越界了,因为没有a(7),a(8)...,a(11)
a(6)的话,只有a(0)-a(5)是可以访问的。
a(6)的话,是定一个6元数组么……额……难道VB和C不一样?请各位无视好了。