簡體   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