[英]Java: don't understand this 'while' condition
我有一个方法可以接受输入数字,并将其与整数数组中的数字进行比较,并根据找到的值返回true或false。 该方法工作正常,但是我在解释其中的一行代码时遇到了麻烦。 特别是在while
语句中(!found && index < accounts.length)
。 我的大脑将其解释为“虽然发现的不是假的并且索引小于accounts数组的长度”……但是我不明白如何将!found
部分与<
运算符进行比较。 完整的方法如下。
public static boolean account(int input) {
// account array
int accounts[] = { 5658845, 4520125, 7895122, 8777541, 4581002 };
// Loop control variable
int index = 0;
// Search results
boolean found = false;
// Search the array.
while (!found && index < accounts.length) {
if (accounts[index] == input) {
found = true;
}
// Increment index
index++;
}
// Return result of search
return found;
}
我的大脑将其解释为“虽然发现不是错误并且索引小于accounts数组的长度”
您的大脑应将其解释为“当发现不是真实的并且索引小于accounts数组的长度时”。
当搜索到accounts
所有元素或找到匹配的帐户时,while循环结束。
<
不适用于!found
,仅适用于index
和accounts.length()
。 !found
和index < accounts.length
是两个不同的独立条件。 两者都必须为true,循环才能运行。 如果可以帮助您理解,则可以这样写。
while ((!found) && (index < accounts.length)) {
这行说两件事:
found
将保留true的值,但是被!
否定了) 和
index
小于accounts.length
(但是accounts
数组中有许多成员) 然后它将执行括号内受控块中的所有内容。
您的方法在accounts
数组中查找int input
。 如果在循环中断时找到与input
相同的值,则方法返回true。
while语句说:循环直到found
为假并且index
小于accounts.length
。
!found
表示一个布尔值,设置为false
。
因此,在括号中,我们有“不小于帐户长度数组的错误AND索引”,
等效于“真实AND索引小于帐户数组的长度”。
索引设置为一个值,例如。 开始时为0。 假设帐户数组的长度为5。那么我们有“ 0小于5”。 该语句在数学上是正确的,因此计算结果为布尔值true。
然后,我们的陈述简化为“ true AND true”,这在逻辑上是正确的。 在while循环的上下文中,我们有while (true)
,因此将执行while循环。
希望对您有所帮助,如果需要进一步说明,请告诉我!
但我不知道如何将!found部分与<符号进行比较。
自从! 运算符大于&&运算符,首先求出的值取反,然后将索引值和科目长度数组与<运算符进行比较。考虑如下:
(!found) && (index < accounts.length)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.