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

2024-11-15 18:05:20
推荐回答(4个)
回答1:

你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开头的数组

回答2:

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

回答3:

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

回答4:

变体型variant