VB中动态数组赋值的相关问题
我想定义一个动态数组a(k),i为数组的元素的个数,i的值用inputbox确定。用for循环在窗体中printa(k)=k我的代码如下,但是运行时输入i的值后,窗体什么...
我想定义一个动态数组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 展开
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 展开
4个回答
展开全部
你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. 除了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开头的数组
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询