[英]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.