2016-08-30 2 views
0

Do Until을 사용하여 Loop in Loops에 관한 질문이 있습니다. 두 번째 루프의 조건이 충족되면 첫 번째 루프가 두 번째 루프를 실행합니까? 예를 들어루프의 VBScript 루프

:

Dim X 
Dim Y 
X = 0 
Y = 0 
' Loop 1 
Do Until X = 20 
    ' Loop 2 
    Do Until Y = 5 
    Y = Y + 1 
    Loop 
X = X + 1 
Loop 

그래서, 루프 1 루프해야 20 회 그것이 5 * 20 번 루프 두 번째 루프를 실행해야 루프마다. 그것은 작동하지 않는 것 같습니다. 두 번째 루프는 한 번만 실행되며 나머지 시간은 무시됩니다.

How to loop a loop in VBScript? 많은 도움이되지 않았습니다. 당신이 Y의 값을 변경하지 않는 한 조건이 이미 충족 되었기 때문에 다시 다음 번 실행되지 않습니다 -

+1

외부 루프의 각 반복에서 내부 루프를 재설정하기 위해 'Y = 0'이 누락되었습니다. – Lankymart

+0

분명히 [VBScript에서 루프를 반복하는 방법은?] (http://stackoverflow.com/questions/28560557/how-to-loop-a-loop-in-vbscript) 많은 도움이되지 않았습니까? 나는 당신이 그것을 읽지 않거나 적절히 따르지 않는다고 가정 할 수 있습니다, 그 예는 꽤 포괄적입니다. 그 대답에 대한 최종 코멘트에 주목하십시오. "''z = 0'이 없으면 두 번째 루프는 첫번째 턴 이후에 입력되지 않을 것입니다."* 변수가'y = 0'이 아닌'z = 0 그러나 동일하게 적용됩니다. – Lankymart

+0

닫기 투표 - * "당신이 묻고있는 것이 분명하지 않습니다"*? 정말, 나에게 꽤 분명해 보인다! 그러나 그것은 단순하고 단순한 복제본입니다. – Lankymart

답변

1

은 내부 루프가 실행되는 처음이 때 Y = 5 종료하기 때문이다. 대신 For...To... 루프를

Dim X 
Dim Y 
X = 0 
Y = 0 
' Loop 1 
Do Until X = 20 
    ' Loop 2 
    Do Until Y = 5 
    Y = Y + 1 
    Loop 
    Y = 0 '// reset value of Y so that inner loop will run next time around 
X = X + 1 
Loop 

또는 사용 :

대신이 시도

Dim X,Y 

For X = 1 To 20 
'// Do something... 
    For Y = 1 To 5 
    '// Do something 5 times 
    Next 
Next 

이 때문에 Y 변수입니다 범위 당신이 선언 및 할당으로는 초기 값입니다 외부 루프의

당신은 this MSDN article

+0

좋은 설명. 그것은 단지 개인적인 취향 일 뿐이지 만 필자는 루프 이후에 변수를 초기화/재설정합니다. – Lankymart

0

Y에서의 VBScript에서 변수 범위에 대한 자세한 내용을보실 수 있습니다은 처음으로 내부 루프가 실행 5에 도달하므로 루프가 다시 실행하지 그래서 라운드 다음에 이미 until y = 5 조건을 충족합니다.

루프 전에 또는 루프가 완료되면 재설정하십시오.

Y = 0 
Do Until Y = 5 
관련 문제