vb 为什么总显示下标越界?求大神详解啊,谢谢

题目:从键盘上任意输入10个数,放入第一个数组中。再将第一个数组中的正数放入另一个数组中,接着统计正数数组的个数、总和、最大数、最小数。我的程序:PrivateSubCo... 题目:从键盘上任意输入10个数,放入第一个数组中。再将第一个数组中的正数放入另一个数组中,接着统计正数数组的个数、总和、最大数、最小数。
我的程序:
Private Sub Command1_Click()
Dim x(10) As Integer
Dim y(10) As Integer
Dim i As Integer
Dim s As Integer
Dim n As Integer
Dim j As Integer
n = 0
Print "原始数组:";
Print
For i = 1 To 10
x(i) = Val(InputBox("请输入第" & i & "个数"))

Print x(i);
If i Mod 5 = 0 Then Print
Next
Print "正数数组:"
Print
If x(i) > 0 Then
n = n + 1
y(n) = x(i)
s = s + y(n)
End If
Print y(n);
If n Mod 5 = 0 Then Print

For n = 1 To 9
For j = n + 1 To 10
If y(n) < y(j) Then
temp = y(n)
y(n) = y(j)
y(j) = temp
End If
Next
Next

Print "正数和="; s;
Print "正数个数="; n;
Print "正数最大="; y(n);
Print "正数最小="; y(j);

End Sub
不知道错在哪里了,求解答。
展开
 我来答
网海1书生
科技发烧友

推荐于2016-05-29 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26234

向TA提问 私信TA
展开全部
Private Sub Command1_Click()
Dim x(10) As Integer, y() As Integer
Dim i As Integer, s As Integer, n As Integer
Dim max As Integer, min As Integer
Print "原始数组:"
For i = 1 To 10
    x(i) = Val(InputBox("请输入第" & i & "个数"))
    Print x(i);
    If i Mod 5 = 0 Then Print
Next
Print "正数数组:"
For i = 1 To 10
    If x(i) > 0 Then
        n = n + 1
        ReDim Preserve y(n)
        y(n) = x(i)
        s = s + y(n)
        If n = 1 Or max < y(n) Then max = y(n)
        If n = 1 Or min > y(n) Then min = y(n)
        Print y(n);
        If n Mod 5 = 0 Then Print
    End If
Next
Print
Print "正数和="; s
Print "正数个数="; n
Print "正数最大="; max
Print "正数最小="; min
End Sub
苏州蓝晓生物科技有限公司_
2022-08-05 广告
苏州蓝晓生物科技有限公司。标准化核心产品:公司拥有完整的琼脂糖介质、葡聚糖介质、聚甲基丙烯酸酯介质生产线,年产分离介质50000L,产品质量稳定并达到国际领先水平。核心优势:公司核心技术人员拥有近二十年不同基质的基球开发和官能化的丰富技术经... 点击进入详情页
本回答由苏州蓝晓生物科技有限公司_提供
匿名用户
2015-04-28
展开全部
病情分析:
你好,根据你的描述这种情况需要及时治疗。
指导意见:
首先需要找出引起发热的病因,建议及时去医院做一个血项检测,分清细菌感染或者病毒感染,对症治疗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sbj518
2015-04-27 · TA获得超过4.4万个赞
知道大有可为答主
回答量:1.1万
采纳率:81%
帮助的人:5471万
展开全部
If x(i) > 0 Then
n = n + 1
y(n) = x(i)
s = s + y(n)
End If

这个语句上面 i的值已经是11了,到这里当然超出范围
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
设计营地
2015-04-27 · 分享交流设计软件相关的知识
设计营地
采纳数:552 获赞数:860

向TA提问 私信TA
展开全部
Print "正数数组:"
Print
If x(i) > 0 Then
n = n + 1
y(n) = x(i)
s = s + y(n)
End If
Print y(n);
If n Mod 5 = 0 Then Print
在这里,你的i在for循环后,i已经为11, If x(i) > 0 Then。 x(i)已经越界。
y(n) = x(i), x(i)已经越界。
我看,你可能是想把这段放到for循环里。
追问
那我该如何改呢?
追答
把i赋一个小于等于10,大于等于1的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9ecbaef
2015-04-27 · 超过10用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:11.3万
展开全部
数组的下标是从0开始计算的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式