求助,死循环了
vb吧
全部回复
仅看楼主
level 1
xiya061 楼主
各位大虾,为啥我这段程序加了goto以后就是死循环了,没有用goto的时候可以执行啊,我看来看去都不知道错哪了,希望大虾们帮忙解决一下。
Private Sub Command2_Click()
Dim Sflag As Boolean
Randomize
List2.Clear
Dim lCount As Integer
lCount = List1.ListCount
ReDi***Count)
For i = 0 To UBound(s) - 1
   Do
     s(i) = Int(Rnd * lCount)
     Sflag = False
     For j = 0 To i - 1
       If s(j) = s(i) Then
         Sflag = True
       End If
     Next
     If Sflag = False Then Exit Do
   Loop
Next
l1: k = 0
For i = 0 To UBound(s) - 1
k = k + List1.List(s(i))
If k > Text2.Text And k < Text1.Text Then
GoTo l1
Else
List2.AddItem List1.List(s(i))
End If
Next
End Sub
2011年03月30日 03点03分 1
level 8
很明显的死循环,for本来就是一个循环,在for 循环体里面又加上goto跳到for语句上面,重新开始了for循环
2011年03月30日 03点03分 2
level 1
xiya061 楼主
回复:2楼
那需要怎么改啊,把
l1: k = 0
For i = 0 To UBound(s) - 1
k = k + List1.List(s(i))
If k > Text2.Text And k < Text1.Text Then
GoTo l1
改成
k = 0
For i = 0 To UBound(s) - 1
l1:k = k + List1.List(s(i))
If k > Text2.Text And k < Text1.Text Then
k = 0
i = 0
GoTo l1
这样跳过了goto的重新循环,但是还是死的啊,请教一下;我很久没有碰vb了,领导叫我编个程序,现在这里遇到麻烦了。
2011年03月30日 04点03分 3
level 1
尽量少用goto作循环
大循环中最好加句doevents
2011年03月30日 05点03分 4
level 1
xiya061 楼主
doevents?是怎么用的啊,我之前没有用过这个语句
2011年03月30日 05点03分 5
level 1
试试这:
private sub command1_click
static a as boolean
a=not a
while a
doevents
me.caption=time
wend
end sub
2011年03月30日 06点03分 6
level 12
我认为他错在条件判断处理这里,
2011年03月30日 08点03分 7
level 3
在模块化编程中,最好不要使用GOTO语句。
10 A=10
20 B=20
25 INPUT C
26 D=A+B-C
28 IF D>0 THEN GOTO 30 '其实此处的GOTO可省略。
29 GOTO 25
30 PRINT A,B,C,D
50 END
RUN<CR>
我随手写了段早年GW-BASIC的程序(不保证能执行,哈哈)。[狂汗]
GOTO语句这种东西早已经不使用了,我保证只要超过一定数量就得逼人去画流程图,不画你可能就难以弄清楚程序在搞些什么……
所以在QB这种模块化编程出现之后,GOTO已经不再被使用了。
PS:不知道你那程序哪来的,如果有教材还在以这种东西做例子的话,这种书扔掉也许是对的。
2011年03月30日 13点03分 8
level 12
Goto我是经常用啊哈哈哈哈
2011年03月30日 14点03分 9
level 1
xiya061 楼主
回复:8楼
这段程序是我写的哈,因为很久没有用vb了,再加上当年我们学的时候讲过goto,所以我就试着用了一下,结果就出现这种情况。唉,看样子我是把东西还给老师啦
2011年03月30日 23点03分 10
level 8
试着改了一下,把goto 语句去掉,可能跟你的本意不太对哦[揉脸]
For i = 0 To UBound(s) - 1
k = k + List1.List(s(i))
If k < Text2.Text or k > Text1.Text Then
List2.AddItem List1.List(s(i))
End If
Next

2011年03月31日 01点03分 11
1