我的vb程序为什么运行第二次的时候就死机呢?

rottenapple 2001-10-19 08:13:46
随机产生10个不相同的数
Private Sub randomnum()
Dim i, j, temp As Integer
Dim a(0 To 9) As Integer
Dim flag As Boolean
j = 0
flag = False
Do While (j < 10)

temp = CInt(Rnd * 100)
If temp = 0 Then temp = 1
For i = 0 To j
If a(i) = temp Then
flag = True
Exit For
End If
Next
If flag = False Then
a(j) = temp
j = j + 1
End If
Loop
For i = 0 To 9
Lblnum(i).Left = 800
Lblnum(i).Caption = a(i)
Next
End Sub
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
laomu 2001-10-20
  • 打赏
  • 举报
回复
运行过程中,在前9次循环中,只要CInt(Rnd * 100)出现一次重复,
你的flag=true就会陷入死循环中!
rottenapple 2001-10-20
  • 打赏
  • 举报
回复
呵呵。sweet()说的对,今早也发现了这个问题,谢谢了
c7654321 2001-10-19
  • 打赏
  • 举报
回复
Randomize
For i = 0 To 9
Lblnum(i).Left = 800
Lblnum(i).Caption = cstr(Rnd * 10000 div 100)
Next
是不是实现了你要的功能?
sweet 2001-10-19
  • 打赏
  • 举报
回复
老兄,如果碰到重复的值,你的flag就一直是true,永远也退不出循环,要重置flag为false
c7654321 2001-10-19
  • 打赏
  • 举报
回复
Lblnum(i).Caption = a(i)
应该写为Lblnum(i).Caption = CStr(a(i))
还有写这么复杂的东西真不知道你是做什么用。
c7654321 2001-10-19
  • 打赏
  • 举报
回复
rnd*1000才是整数

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧