Java:不明白这个'while'条件

时间:2017-04-25 04:13:23

标签: java while-loop

我有一个方法接受输入数字并将其与整数数组中的数字进行比较,并返回true或false,具体取决于是否找到该值。该方法工作正常,但我无法解释其中的一行代码。特别是在while声明(!found && index < accounts.length)。我的大脑解释这个的方式是“虽然发现不是假的,索引小于帐户数组的长度”......但我不明白!found部分如何与{{1}进行比较运算符。完整的方法如下。

<

5 个答案:

答案 0 :(得分:1)

  

我的大脑解释这个的方式是“虽然发现不是假的,索引小于帐户数组的长度”

你的大脑应该将其解释为“发现不是 true 并且索引小于帐户数组的长度”。

当找到accounts的所有元素或找到匹配的帐户时,while循环结束。

答案 1 :(得分:1)

<不适用于!found,仅适用于indexaccounts.length()!foundindex < accounts.length是两个不同的独立条件。对于循环运行,两者都必须为true。你可以写这样的行,如果它有助于你理解。

 while ((!found) && (index < accounts.length)) {

这句话有两件事:

  1. 虽然发现不正确(found 保持值为true,但它被!否定
    1. index小于accounts.length(但accounts数组中有很多成员)
    2. 然后它将执行大括号内受控块中的任何内容。

答案 2 :(得分:0)

您的方法在int input数组中查找accounts。如果在循环中断时找到与input相同的值,并且方法返回true。

while语句说:循环直到found为false且index小于accounts.length

答案 3 :(得分:0)

!found是指布尔值,设置为false

因此,在括号中,我们有&#34;非假并且索引小于帐户数组的长度&#34;,

相当于&#34; true AND index小于accounts array&#34;的长度。

索引设置为一个值,例如。开始时为0。让我们说帐户数组的长度是5.然后我们有&#34; 0小于5&#34;。此语句在数学上是正确的,因此计算为布尔值true。

然后,我们的陈述简化为&#34; true AND true&#34;,这在逻辑上是正确的。在while循环的上下文中,我们有while (true),因此它将执行while循环。

希望这有帮助,如果您需要进一步澄清,请告诉我们!

答案 4 :(得分:0)

  

但我不明白如何将!found部分与&lt;标志。

由于优先权!运营商不仅仅是&amp;&amp;运算符,首先取消找到的值,然后将索引和帐户长度数组的值与&lt;运算符。考虑它是这样的:

(!found) && (index < accounts.length)