Vb.net While循环中嵌套的If/Else不工作?

Vb.net While循环中嵌套的If/Else不工作?,vb.net,loops,if-statement,while-loop,nested-loops,Vb.net,Loops,If Statement,While Loop,Nested Loops,VB新手,尝试在VB中进行一些计算编码,但似乎不起作用 我已将整数存储到“Access”中 Dim max_number As Integer = 63 If Access > max_number Then Access = max_number End If While Access > max_number Or Access >= 0 If Access - 32 >= 0 Then

VB新手,尝试在VB中进行一些计算编码,但似乎不起作用

我已将整数存储到“Access”中

      Dim max_number As Integer = 63

    If Access > max_number Then
        Access = max_number
    End If

    While Access > max_number Or Access >= 0

        If Access - 32 >= 0 Then
            Access = Access - 32
            Text1.Text = "1"
        ElseIf Access - 16 >= 0 Then
            Access = Access - 16
            Text2.Text = " 1"
        ElseIf Access - 8 >= 0 Then
            Access = Access - 8
            Text3.Text = "1"
        ElseIf Access - 4 >= 0 Then
            Access = Access - 4
            Text4.Text = "1"
        ElseIf Access - 2 >= 0 Then
            Access = Access - 2
            Text5.Text = "1"
        ElseIf Access - 1 >= 0 Then
            Access = Access - 1
            Text6.Text = " 1"
        End If
          Access = 0

    End While

非常感谢。

您陷入了无限循环,因为您在循环结束时一直将
Access
设置为零

另外,我不知道您到底想做什么,但是您可能需要研究
Mod
操作符,因为它可能会减少循环中需要的迭代次数

无论如何,要打破无限循环,请尝试以下方法:

Dim max_number As Integer = 63

If Access > max_number Then
    Access = max_number
End If

While Access > max_number Or Access >= 0

    If Access - 32 >= 0 Then
        Access = Access - 32
        Text1.Text = "1"
    ElseIf Access - 16 >= 0 Then
        Access = Access - 16
        Text2.Text = " 1"
    ElseIf Access - 8 >= 0 Then
        Access = Access - 8
        Text3.Text = "1"
    ElseIf Access - 4 >= 0 Then
        Access = Access - 4
        Text4.Text = "1"
    ElseIf Access - 2 >= 0 Then
        Access = Access - 2
        Text5.Text = "1"
    ElseIf Access - 1 >= 0 Then
        Access = Access - 1
        Text6.Text = " 1"
    Else
        Exit While
    End If

End While
删除循环中的“Access=0”,并将循环更改为,您不需要测试max_number,因为它以前已经完成了

While Access > 0
如果您尝试在纸上运行它,您会注意到如果Access等于2。它将进入您的if(do Access=Access-2),并且Access将等于0,您将处于一个infite循环中

但是你不需要一个while循环

Dim max_number As Integer = 63

If Access > max_number Then
    Access = max_number
End If

If Access > 0 Then
    If (Access And 32) > 0 Then Text1.Text = "1"
    If (Access And 18) > 0 Then Text2.Text = "1"
    If (Access And 8) > 0 Then Text3.Text = "1"
    If (Access And 4) > 0 Then Text4.Text = "1"
    If (Access And 2) > 0 Then Text5.Text = "1"
    If (Access And 1) > 0 Then Text6.Text = "1"
End If

你的错误是什么?呃,软件就停在那里了。除“关闭”按钮外,我无法单击任何其他按钮。您的预期结果是什么?实际发生了什么?预期结果,例如:如果用户输入的数字=63,那么6个文本框将有“1”?因此,它将继续循环,直到它减去0…如果在迭代结束时再次将访问值设置为“0”,您希望如何退出循环?。去掉这个,循环的逻辑是错误的。