2017-01-10 11 views
0

私はステップサイズを変更してforループのステップしようとしている:VB.net可変ステップ増加

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 

私は「t」のループが持っているどのくらいに応じて、前進するために、「S」のループをしたいです"t"ループを終了する前に "t + 1"という値を与えます。

私に何か不足していますか? thxたくさん!

+2

Tの初期値は? VB.NET Tとtは同じ変数とみなされ、2回目のForループでtを再利用することはできません。コンパイルされません。 – ADyson

+2

あなたは*何をしたいのか*何をやるべきかというよりあなたがやりたいこと*に関連する質問をするべきです – Plutonix

+1

tとTという2つの変数を持つことはできません。また、vb.netがToとステ​​ップをキャッシュしているので、「ステップi」を使用する代わりに、手動で「s」を増やす必要があります。もう一つの選択肢はwhileループを使うことです。最後に、意味のある変数名を使用します。 –

答えて

3

ループが開始されたら、stepの値を変更することはできません。 ForループのMSDNドキュメントには、次のように書かれています。

For ... Nextループが開始されると、Visual Basicでは開始、終了、およびステップが評価されます。 Visual Basicはこの時点でのみこれらの値を評価し、カウンタに開始値を割り当てます。ステートメントブロックが実行される前に、Visual Basicはcounter to endを比較します。 counterがすでに終了値よりも大きい場合(またはstepが負の場合は小さく)、Forループは終了し、制御はNextステートメントに続くステートメントに移ります。それ以外の場合は、文ブロックが実行されます。値を変更

開始、終了、またはステップループが最初に入力されたときに決定された反復値に影響を及ぼしません。

詳細はhttps://msdn.microsoft.com/en-us/library/5z06z1kb.aspxを参照してください。

ステップを増やす代わりに、適切な条件が存在するところでContinue Forを使用して、現在のループ反復の実行を停止し、次のループに直進することができます。または、柔軟性を高めるために、Whileループを使用して機能を再実装することもできます。

これとは別に、あなたa)は、あなたがt/Tを宣言していないため、あなたのサンプルコードはコンパイルされませんと、b)あなたは、内側のforループカウンタとしてt秒の時間を使用することはできません。

0

ありがとうございました!
資本Tは私の完全なコードでは;-)ちょうど最小例えばでしたそれはperioden
と呼ばれ、私は最終的にいくつかExit Do条件でDo ... Loopを使用...正常に動作します!

+0

ありがとう、私はあなたが解決策を見つけてうれしいですが、答えとしてコメントを投稿しないでください。一度十分な評判(私は思う)があれば、他の回答にコメントを追加することができます。この「回答」はある時点で司会者によって削除され、質問に答えない回答は好きではないことがわかります。それはちょうど私の友好的なヒントです:-) – ADyson