VB和一般的逻辑理解

时间:2013-11-04 02:07:37

标签: arrays vb.net

我的问题是我无法理解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

3 个答案:

答案 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连接,因此它们都必须为真。

最初两者都是:

  1. Not blFound为真,因为blFound设置为False
  2. intCounter < intPoitns.Length为真,因为intCounter为0且intPoitns.Length为5。
  3. 然后循环遍历数组intPoitns。如果do while中的任何一个条件变为假,则循环将停止:

      如果Not blFound变为真,则
    1. blFound可能会变为假 - 这意味着您找到了自己的项目。
    2. 如果intCounter < intPoitns.Length变为5,那么
    3. intCounter将变为false,这意味着您已到达数组的末尾。

答案 2 :(得分:0)

执行while循环是因为你的条件都是blFound,intCounter&lt; intPoitns.Length是真的

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

intCounter为0小于intPoitns.Length为5

所以true和true将执行循环