求助🆘🆘🆘,为什么会出现下标越界啊,我觉得我这段代码没什么问
vb吧
全部回复
仅看楼主
level 6
COHA的名字 楼主
求助🆘🆘🆘,为什么会出现下标越界啊,我觉得我这段代码没什么问题啊[泪][泪][泪]
2020年05月15日 10点05分 1
level 6
COHA的名字 楼主
当然如果各位觉得这段代码有什么错误也请大家指点一哈
2020年05月15日 10点05分 2
level 11
你把代码复制上来
我不想整个打一遍
2020年05月15日 10点05分 3
Option Explicit Option Base 1 Private Sub Command1_Click() Dim n%, i%, j%, a() n = Val(Text1) Picture1.Cls ReDim a(n, n) If i = 1 Or j = 1
2020年05月15日 11点05分
完整的发在下一个帖子了
2020年05月15日 11点05分
level 15
目测了一下代码的执行过程……
n = Val(Text1) '令n等于文本框中输入的数字
ReDim a(n, n) '用n重定义数组a
If i = 1 Or j = 1 Then '如果i=1或j=1(此时i和j都是0,该条件不满足)
Else
For j = 2 To i - 1 '令j从2循环到-1,j获得初值2,不进入循环
然后就执行到出错这句了,此时i=0,j=2,也就是说如果输入的是0或1,才会出现下标越界的错误
2020年05月15日 11点05分 4
好吧,你在楼上回复了一个不完整的代码,但是出现了一个关键信息:Option Base 1,这样说来,是i=0导致的越界
2020年05月15日 11点05分
但我无论输入什么数字都是下标越界啊[泪][泪]
2020年05月15日 11点05分
@COHA的名字 我已经补充说明了,是i=0导致的越界;另外,看了我对你代码的解释,你对如何修改没什么想法么?
2020年05月15日 11点05分
@初音✨七奈 我想问一下为什么是i=0导致的呢[托腮]
2020年05月15日 12点05分
level 15
看来只有这点提示,你自己还没有能力改正代码啊……
给你写个参考吧:
For i = 1 To n
For j = 1 To i '注意不需要循环到n,第i行只有i个数
If j = 1 Then '如果是每行的第一个数
a(i, j) = 1 '则等于1
Else '其他的数
a(i, j) = a(i - 1, j - 1) + a(i - 1, j) '都等于前一行对应的两个数之和(最右边也可以这样求)
End If
Picture1.Print Tab((n - i) * 2 + j * 4); a(i, j); '定位并输出这个数
Next j
Picture1.Print '换行
Next i
2020年05月15日 13点05分 5
定位那里的代码,给每个数留的宽度可能太小,可以自行改大点(比如把2改成3,4改成6)
2020年05月15日 13点05分
@初音✨七奈 我想请教一下定位那里为什么这么写[疑问]
2020年05月15日 14点05分
@COHA的名字 因为我要输出的是直角杨辉三角
2020年05月15日 14点05分
@COHA的名字 你要直角(左对齐)的啊……这个是等腰三角形(居中)的,那把Tab里的表达式改成j*6就行了
2020年05月15日 14点05分
1