处理下一个循环的两个层

时间:2015-03-11 13:55:28

标签: for-loop vbscript

我有一个双层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?)

3 个答案:

答案 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)

VB中的

breakExit [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