VB中动态数组赋值的相关问题

我想定义一个动态数组a(k),i为数组的元素的个数,i的值用inputbox确定。用for循环 在窗体中print a(k)=k 我的代码如下,但是运行时输入i的值后,窗体什么都没显示出来,不知道怎么回事,请高手改正一下 谢谢!
Private Sub Form_Click()
Dim a()
ReDim a(k)
i = Val(InputBox("输入元素个数"))
i = UBound(a)
For k = 1 To i
a(k) = k
Print a(k);
Next k
End Sub

你redim的时候k没有值,而且你的i和k用乱了。猜测你的目的是输入一个数字到k,然后遍历赋值。

这样做两个改动:
1. 除了ReDim a(k) 外,交换所有的k和i,因为按习惯,i 用作循环变量,而你恰好也希望用k来表示数组的长度;
2. 把ReDim语句放在InputBox赋值之后,并删掉 i = UBound(a),因为Redim a(k)之后,k就已经是UBound(a)了。

结果是

Private sub form_click()
dim a()
k = val(inputbox("输入元素个数"))
redim a(k)
for i = 1 to k
a(i) = i
print a(i);
next i
End Sub

这样,这个程序已经可以用了,但是下面我需要说一下编程习惯的问题
1. 你的变量都没有声明:
dim 是用来声明变量的,VB的非严格模式里面,允许不声明变量直接赋值,但是随着你程序的越来越复杂,不声明变量会造成很多奇怪的难以找到的错误。声明变量的方式是:
Dim i as Integer, k as integer, a(k) as integer
这样的声明虽然比较麻烦,但是这为了避免奇怪的错误,一定要养成良好的习惯。你可以在代码里的最上面插入一行: Option Explicit 加上这一句的意思是,如果某一变量名没有被声明就会报错

2. 这个程序虽然能得出正确的结果,但是要注意,数组的默认LBound(最小下标)是0,也就是说,你如果k值输入4,实际上数组结果是0、1、2、3、4,一共5个,只是a[0]你没有用到。其他的编程语言也都是0开始的,以后根据实际情况,应该会遇到0开头的数组
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-21
Private Sub Form_Click()
Dim a()
i = Val(InputBox("输入元素个数"))
ReDim a(i)
For i = 0 To UBound(a)-1
a(i) = i
Print a(i);
Next i
End Sub
第2个回答  2011-11-21
Option Base 0
Private Sub Form_Click()
Dim a()
i = Val(InputBox("输入元素个数"))
ReDim a(i - 1)
For k = 0 To UBound(a)
a(k) = k
Print a(k);
Next k
End Sub
第3个回答  2022-10-14
变体型variant

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网