2017-04-25 52 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)