Vb.net While循环中嵌套的If/Else不工作?
VB新手,尝试在VB中进行一些计算编码,但似乎不起作用 我已将整数存储到“Access”中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
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”,您希望如何退出循环?。去掉这个,循环的逻辑是错误的。