2017-06-18 25 views
0

を分割し、私は私の先生が書いたコードのいくつかの作品を読んだ、彼はこのコードのchunckを持っていましたと数=数-2私はそれを変更することで、それを簡素化しようとしたので、私は実際にその部分を理解していない:Visual Basicの私はVisual Basicの上だ

Dim number As Integer = InputBox("Divide number by 2:") 
    Dim result As Integer = 0 

    Do While (number <> 0) 
     result = number/2 
    Loop 
    MsgBox("The result is: " & result, MsgBoxStyle.Exclamation) 

End Sub 

が、それは私が「OK」

012をクリックした後、凍結し続けます

提案がありますか?

+0

注:これはVBAではないので、タグを編集してVB.Netであると言いました。 (私は正しいと確信しています) – YowE3K

+0

補足として、私はOption Strict https://stackoverflow.com/documentation/vb.net/4022/option-strictと 'Dim number = Val(InputBox)をお勧めします。 ( "2で割ります":)))InputBoxが文字列を返します – Slai

+0

数字が偶数であるという巨大な前提があります。そうでなければループになります。たぶん教師は<> 0ではなく> 0を意味していたのでしょうか。 – dbasnett

答えて

2

それはあなたがそれ無限ループ作られたので、フリーズ:

Do While (number <> 0) 
    result = number/2 
Loop 

ループはnumberの値をチェックしますが、ループ内で変更したコードは決して修正numberの値。したがって、条件が最初にチェックされたときに条件が真であれば、常に真となります。 、それは最終的にループ条件が偽の製造、0に等しくなる(それもだと仮定して)であろうnumberので

Do While (number <> 0) 
    result += 1 
    number = number - 2 
Loop 

は、ループの各反復で2だけデクリメントされ、ループが終了します:元のコード値を変更し。

基本的に、ループは何らかの形で条件でチェックされている値を変更する必要があります(またはループを終了するための他の制御ステートメントがある)か、ループが無限に実行されます。