0

我的问题是我无法理解 Do While Not blFound And intCounter < intPoitns.Length 的逻辑,因为为了在循环开始执行时执行两个语句都必须为真,所以如果 Not blFound 意味着它是真的,但它是分配的布尔值 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
4

3 回答 3

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)

于 2013-11-04T02:30:31.057 回答
0

你是对的,为了do while工作,条件必须是真实的。

您有 2 个条件连接,And因此它们都必须为真。

最初两者都是:

  1. Not blFound为真,blFound设置为False
  2. intCounter < intPoitns.LengthintCounter0 和intPoitns.Length5一样为真。

然后你遍历数组intPoitnsdo while如果其中任何一个条件为假,则循环将停止:

  1. Not blFound如果blFound变为真,则可能变为假 - 这意味着您找到了您的物品。
  2. intCounter < intPoitns.Length如果 变为 5 则变为 false,intCounter这意味着您到达了数组的末尾。
于 2013-11-04T02:16:49.590 回答
0

执行 while 循环,因为您的条件 blFound , intCounter < intPoitns.Length 都是 true

blFound 最初设置为 false,因此Not blFound为 true

intCounter 为 0 小于 intPoitns.Length 为 5

所以 true 和 true 将执行循环

于 2013-11-04T02:27:34.167 回答