我有一个双层For Next
循环,如下所示:
For i = 1 To 100
For j = 1 To 12
Do Something
Next
Next
我的问题是,在内部For Next
循环中,如何在遇到条件时停止循环并继续Next i
。例如,j = 1,2,3
符合要求并执行;但是当j = 4
并且它符合条件时,j
(5,6,7,8,9,10,11,12)
的其余部分将不会被处理,但会启动Next i
;并且在新循环期间,当它达到条件并且终止循环时为j = 8
,因此不会评估j = 9,10,11,12
以节省时间。它并不总是j = 4
然后退出内循环(如果是这样,为什么不写j = 1 To 4
?)
答案 0 :(得分:1)
我同意之前的回答,但它是用Java编写的:)
这是你如何在Vbscript中编写它
For i = 1 To 100
For j = 1 To 12
If j = 4 Then Exit For
'Else do something
Next
Next
不幸的是,Vbscript并不总是像你想要的那样,我不确定它会退出哪一个。在这种情况下它很容易,但是有了更多的嵌套循环,我担心它的行为会有所不同,例如取决于操作系统(我的工作中一直有这种问题!),然后退出另一个循环。要避免这种情况,请使用子功能:
Sub test()
For i = 1 To 100
F_second_Loop
Next
End Sub
Function F_second_Loop()
For j = 1 To 12
If j = 4 Then Exit For
'Else do something
Next
End Function
而且,是的,我发现Exit For
退出了错误的循环。花了我几个月才找到问题!
答案 1 :(得分:1)
break
为Exit [For|Do|Sub|Function|Property]
(参见here)。 E.g:
Option Explicit
Dim i, j
For i = 1 To 5
WScript.StdOut.Write "i: " & i & " =>"
For j = 5 To 1 Step -1
WScript.StdOut.Write " " & j
If i = 3 And j = 3 Then Exit For
Next
WScript.StdOut.WriteLine
Next
输出:
cscript 28988507.vbs
i: 1 => 5 4 3 2 1
i: 2 => 5 4 3 2 1
i: 3 => 5 4 3
i: 4 => 5 4 3 2 1
i: 5 => 5 4 3 2 1
正如您从假货中看到的那样
If i = 3 And j = 3 Then Exit For
对您的问题的更好答案需要有关如何确定当前i的For j
循环限制的更多详细信息。
答案 2 :(得分:0)
break
声明可让您突破'一个循环(由大多数语言实现):
for i = 1 to 100
for j = 1 to 12
if j == 4 break
// do something
next
next