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
展开
 我来答
solidco2
推荐于2016-07-09 · 知道合伙人软件行家
solidco2
知道合伙人软件行家
采纳数:126 获赞数:539

向TA提问 私信TA
展开全部
你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开头的数组
zx001z7d53
2011-11-21 · TA获得超过2万个赞
知道大有可为答主
回答量:2.4万
采纳率:52%
帮助的人:5556万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianqing20wen

2011-11-21 · TA获得超过2.4万个赞
知道大有可为答主
回答量:8226
采纳率:88%
帮助的人:5072万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
益怜WM
2022-10-14
知道答主
回答量:2
采纳率:0%
帮助的人:494
展开全部
变体型variant
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式