我的问题是我无法理解Do While Not blFound和intCounter< intPoitns.Length因为顺序do while循环开始执行是两个语句都必须为true所以如果不是blFound它意味着它是true但它被赋值为布尔值false,所以为什么循环执行并且不仅仅适用于blFound或者对于intCounter。它看起来很容易但是我的大脑不能在同一时间处理它,如果有人可以解释它用非常简单的语言请求非常适合。感谢您的时间!
以下是示例: 假设intValidNumbers是一个整数数组。编写在数组中搜索值247的代码。如果值为founf,则显示消息,它是数组中的位置。如果未找到则显示指示如此的消息。
Dim intPoitns() As Integer = {11, 42, 322, 24, 247}
Dim strInput As String = InputBox("Enter integer", "Data needed")
Dim intInput As Integer
Dim blFound As Boolean = False
Dim intCounter As Integer = 0
Dim intPosition As Integer
If Integer.TryParse(strInput, intInput) Then
Do While Not blFound And intCounter < intPoitns.Length
If intPoitns(intCounter) = intInput Then
blFound = True
intPosition = intCounter
End If
intCounter += 1
Loop
Else
MessageBox.Show("have to enter integer number")
End If
If blFound Then
lblResult.Text = ("You found" & intPosition + 1)
Else
lblResult.Text = ("not Found")
End If
答案 0 :(得分:1)
Not
仅适用于blFound
。所以想想这样:
Do While (Not blFound) And (intCounter < intPoitns.Length)
If intPoitns(intCounter) = intInput Then
blFound = True
intPosition = intCounter
End IF
intCounter += 1
Loop
因此blFound = False
我们可以看到(Not blFound)
== (Not False)
== (True)
此外,如果blFound = True
,我们会(Not blFound)
== (Not True)
== (False)
答案 1 :(得分:0)
你是对的,因为do while
可以工作,条件必须是真的。
您有两个条件由And
连接,因此它们都必须为真。
最初两者都是:
Not blFound
为真,因为blFound
设置为False
。intCounter < intPoitns.Length
为真,因为intCounter
为0且intPoitns.Length
为5。然后循环遍历数组intPoitns
。如果do while
中的任何一个条件变为假,则循环将停止:
Not blFound
变为真,则blFound
可能会变为假 - 这意味着您找到了自己的项目。intCounter < intPoitns.Length
变为5,那么intCounter
将变为false,这意味着您已到达数组的末尾。答案 2 :(得分:0)
执行while循环是因为你的条件都是blFound,intCounter&lt; intPoitns.Length是真的
blFound最初设置为false,因此 Not blFound 为真
intCounter为0小于intPoitns.Length为5
所以true和true将执行循环