我试图通过更改步长来执行for循环:
Dim i As Integer = 1
Dim a As Integer
Dim b As Integer
For s As Integer = 0 To T Step i
b = 999
a = 0
For t As Integer = s To T
do stuff with a
Select Case a
Case <= b
b = a
Case > b
i = t + 1
Exit For
End Select
Next t
Next s
我想要&#34; s&#34;循环向前迈进,取决于&#34; t&#34;循环已经消失,因此我给它值#34; t + 1&#34;在退出&#34; t&#34;环...
我错过了什么吗? 很多!
答案 0 :(得分:3)
循环开始后,您无法更改step
的值。 For循环的MSDN文档说明了这一点:
当For ... Next循环启动时,Visual Basic会评估开始,结束和步骤。 Visual Basic仅在此时评估这些值,然后将start指定为计数器。在语句块运行之前,Visual Basic将计数器与结束进行比较。如果counter已经大于结束值(或者如果step为负数则更小),For循环结束并且控制传递给Next语句后面的语句。否则,语句块将运行。
和
更改start,end或step的值不会影响首次输入循环时确定的迭代值。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/5z06z1kb.aspx。
增加步骤的替代方法可以是在存在适当条件的点处使用Continue For
来停止执行当前循环迭代并直接移动到下一个迭代。或者,您可以使用While
循环重新实现该功能,从而为您提供更大的灵活性。
除此之外,您的示例代码将无法编译,因为您a)您尚未声明t
/ T
并且b)您不能再次使用t
作为内循环的计数器。
答案 1 :(得分:0)
感谢您的帮助!
首都T
只是最小的例子;-)在我的完整代码中,它被称为perioden
我最后使用了Do ... Loop
Exit Do
条件......工作正常!