vb下标越界
OptionBase1PrivateSubCommand1_Click()Dims()AsIntegerDimi%,n%,k%,ave!n=Val(Text1.Text)...
Option Base 1
Private Sub Command1_Click()
Dim s() As Integer
Dim i%, n%, k%, ave!
n = Val(Text1.Text)
ReDim s(n)(运行时这里显示下标越界)
For i = 1 To n
s(i) = Int(101 * Rnd)
Picture1.Print s(i);
k = k + s(i)
Next i
ave = k / n
Text2.Text = Str(ave)
End Sub 展开
Private Sub Command1_Click()
Dim s() As Integer
Dim i%, n%, k%, ave!
n = Val(Text1.Text)
ReDim s(n)(运行时这里显示下标越界)
For i = 1 To n
s(i) = Int(101 * Rnd)
Picture1.Print s(i);
k = k + s(i)
Next i
ave = k / n
Text2.Text = Str(ave)
End Sub 展开
展开全部
首先你用了这句:Option Base 1 也就是数组的最小标是 1 ,如果出现 a(0) 那就会越界了!
往下看,你用了这句: n = Val(Text1.Text) ,就是说,如果文本框text1的内容为空或者不是数字的话,n就=0,当n=0时,你再redim a(0),那么就会下标越界了!当n>0时,程序没任何问题!
结论是:为了不出现这种错误,可以有下面两种修改:
1: 去掉 Option Base 1
2: 判断n的值 ,当n=0时,退出程序,不做任何动作!!
-----------------------------------------
哦,你要求平均值那作为分母的n当然不能=0
你就判断n值吧,当n=0 时退出程序
在n=val(text1.text) 这句下面加一句: if n=0 then exit sub 其他代码不变
往下看,你用了这句: n = Val(Text1.Text) ,就是说,如果文本框text1的内容为空或者不是数字的话,n就=0,当n=0时,你再redim a(0),那么就会下标越界了!当n>0时,程序没任何问题!
结论是:为了不出现这种错误,可以有下面两种修改:
1: 去掉 Option Base 1
2: 判断n的值 ,当n=0时,退出程序,不做任何动作!!
-----------------------------------------
哦,你要求平均值那作为分母的n当然不能=0
你就判断n值吧,当n=0 时退出程序
在n=val(text1.text) 这句下面加一句: if n=0 then exit sub 其他代码不变
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
v
运行的时候
text1里面只能输入数字!!
如果是 Text1 或者 其他字符,肯定错阿!
你可以这样:
Option Base 1
Private Sub Command1_Click()
Dim s() As Integer
Dim i%, n%, k%, ave!
n = Val(Text1.Text)
ReDim s(n) '(运行时这里显示下标越界)
For i = 1 To n
s(i) = Int(101 * Rnd)
Picture1.Print s(i);
k = k + s(i)
Next i
ave = k / n
Text2.Text = str(ave)
End Sub
Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub
运行的时候
text1里面只能输入数字!!
如果是 Text1 或者 其他字符,肯定错阿!
你可以这样:
Option Base 1
Private Sub Command1_Click()
Dim s() As Integer
Dim i%, n%, k%, ave!
n = Val(Text1.Text)
ReDim s(n) '(运行时这里显示下标越界)
For i = 1 To n
s(i) = Int(101 * Rnd)
Picture1.Print s(i);
k = k + s(i)
Next i
ave = k / n
Text2.Text = str(ave)
End Sub
Private Sub Form_Load()
Text1 = ""
Text2 = ""
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Dim s() As Integer 只是定义了一个数组,并没有指出该数组有多大的容量,所以此句中只是定义了一个没有容量的数组,其中一个项都没有,所以当您为其中某项赋值时,就会超过它的下标.
您可以定义Dim s(100) As Integer试试看,这样定义后,您有S(0)-S(100)共101个项可以用,在这个区间里不会下标越界,当您为S(101)赋值时,就又会出现下标越界错误 了
您可以定义Dim s(100) As Integer试试看,这样定义后,您有S(0)-S(100)共101个项可以用,在这个区间里不会下标越界,当您为S(101)赋值时,就又会出现下标越界错误 了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询