我在while循环

时间:2017-09-21 02:31:54

标签: java

我不明白以下布尔值是如何工作的......

    int searchedValue = 100;  int pos = 0;
    boolean found = false;
    while (pos < values.length && !found)
    {
       if (values[pos] == searchedValue) 
       { 
          found = true; 
       }
       else 
       { 
          pos++; 
       }
    }
    if (found) 
    { 
    System.out.println(“Found at position: ” + pos); 
    }
    else { System.out.println(“Not found”); 
    }

以下是我不明白的事情:

  1. boolean found = false,最初是将boolean设置为false,对吧?然后在while循环条件&amp;&amp; !发现:意味着boolean发现不是假的?这意味着当find = true时,循环将保持循环???对我来说完全没有意义。
  2. 然后在while循环中,如果value [pos] == searchingValue,设置found = true ???但是当循环条件!found = false时,如果找到值则保持循环,如果找不到值则为pos ++ ???再一次,对我来说完全没有意义。
  3. 当然,正如你最后看到的那样,如果(发现)条件也让我迷惑,发现设置为假,那么如果(找到)意味着if(found = false,表示未找到),则打印out found value ????
  4. 我的意思是整个布尔的东西让我感到困惑....有人可以向我解释一下吗?请~~~ ???

    任何人都可以理解我的问题吗?我不断得到答案,说我的问题是重复给别人的问题而且已经得到了回答......我检查了他们的帖子,没有!那些答案没有回答我的问题!

    这些帖子上的答案说!发现与发现相反,如果发现最初设置为假,那么!发现等于找到=真......我明白了!但是,你们不觉得这就是让我感到困惑的事情!!!

    !found与找到的初始值相反,在此代码中,found = false是初始值,然后在while循环条件中!found意味着找到= true。这意味着while循环只有循环如果找到=真???为什么???

    并且在while循环中,如果发现条件设置为true,则保持循环...为什么?如果找到值,则不应设置found = false来跳出循环而不是

    然后在最后如果(找到),打印,为什么??? found = false,如果(false),打印发现值没有意义....

    这段代码在教科书中,作者完全没有解释,只是说应该是这样的代码,我只是不明白为什么......有人理解我的问题请请给我解释!!!

    如何从我的问题中删除重复标记?请不要将我的问题标记为重复,因为ppl只是停止回答我。我检查了所有帖子ppl标记我重复,答案没有回答我的问题....你知道吗?我只是将我自己的问题复制到同一个网站,因为有些人只是盲目地将我复制,因此我没有得到答案。

1 个答案:

答案 0 :(得分:3)

boolean可以是truefalse

found被用作控制标志。它最初设置为false,因为您还没有找到任何内容。它在while循环的头部的表达式中使用,以便仅在foundfalse时才执行循环,即。一旦你找到了什么,循环就会终止。当匹配发生时(在循环内)found设置为true以实现此目的。循环完成后,输出基于found的值。

只要表达式

while循环将继续执行
pos < values.length && !found

true。鉴于您正在使用and(&&),表达式的两个部分必须为true

如果我们仔细查看!found,则当truefound时,此子表达式为false。这是因为!运算符否定了它应用于的表达式的值。因此,如果foundfalse,则!foundtrue。同样,如果foundtrue,则!foundfalse。因此,当foundfalse时,循环继续执行。

打印输出还取决于found的值。 if语句的表达式与while循环很相似,即。会发生什么取决于表达式是true还是false

在您的情况下,if (found)是所有表达式中最简单的,即。是found truefalse。如果有帮助,您可以将其视为if (found == true)。 Java的习语是省略== true