2017-04-25 40 views
0

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

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; 

} 
+0

您能尽快返回TRUE;因为你已经匹配了元素。 'found'变量甚至不需要。 –

+0

@ theProgrammer101从技术上讲'while'是关键字和声明。 – EJP

+0

@EJP你会在条件语句中调用吗? – CodingNinja

回答

1

我的大脑解释这个问题的方法是“而发现是不是虚假和指数低于账户数组的长度较小的”

你的大脑应该把它解释为“,而发现不是true AND索引小于帐户数组的长度“。

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

+0

第1部分是不正确的,发现持有假的价值 – CodingNinja

0

您的方法在accounts数组中寻找int input。如果在循环中断和方法返回true时发现与input相同的值。

while statement statement:loop until found is false and index is less than accounts.length

0

!found引用一个布尔值,设置为false

所以,在括号中,我们有“不是虚假和指数小于账户数组的长度”,

这相当于“真实而指数小于账户数组的长度”。

索引被设置为一个值,例如。 0在开始。假设账户数组的长度是5.那么我们有“0小于5”。这个陈述在数学上是真实的,所以评估为布尔真。

然后,我们的陈述简化为“真实与真实”,这在逻辑上是正确的。在while循环的上下文中,我们有while (true),这样会执行while循环。

希望这可以帮助,让我知道如果你需要进一步澄清!

1

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

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

此行是说两两件事:

  1. 而发现是不正确的(found持有的真正价值,但它是由!否定)

  1. index小于accounts.length(然而,许多成员是accounts阵列中)

那么它将执行无论是在括号内的控制块。

+0

@EddyZavala我希望这是清楚的你,我尽我所能打破它,并尽可能简单的答案,同时仍然完全解释问题 – CodingNinja

+0

请评论下面如果你有任何问题 – CodingNinja

0

但我不明白!发现部分可以如何与<符号进行比较。

既然优先!运营商超过& &运营商,发现价值被否定,然后再指数和账户数组的长度值与<操作。考虑像这样比较:

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