我有一个方法接受输入数字并将其与整数数组中的数字进行比较,并返回true或false,具体取决于是否找到该值。该方法工作正常,但我无法解释其中的一行代码。特别是在while
声明(!found && index < accounts.length)
。我的大脑解释这个的方式是“虽然发现不是假的,索引小于帐户数组的长度”......但我不明白!found
部分如何与{{1}进行比较运算符。完整的方法如下。
<
答案 0 :(得分:1)
我的大脑解释这个的方式是“虽然发现不是假的,索引小于帐户数组的长度”
你的大脑应该将其解释为“发现不是 true 并且索引小于帐户数组的长度”。
当找到accounts
的所有元素或找到匹配的帐户时,while循环结束。
答案 1 :(得分:1)
<
不适用于!found
,仅适用于index
和accounts.length()
。 !found
和index < accounts.length
是两个不同的独立条件。对于循环运行,两者都必须为true。你可以写这样的行,如果它有助于你理解。
while ((!found) && (index < accounts.length)) {
这句话有两件事:
found
将保持值为true,但它被!
否定和
index
小于accounts.length
(但accounts
数组中有很多成员)然后它将执行大括号内受控块中的任何内容。
答案 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)