繁体   English   中英

Java:不了解这种“同时”情况

[英]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 ,仅适用于indexaccounts.length() !foundindex < accounts.length是两个不同的独立条件。 两者都必须为true,循环才能运行。 如果可以帮助您理解,则可以这样写。

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

这行说两件事:

  1. 而found不是true( found 保留true的值,但是被!否定了)

  1. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM