簡體   English   中英

Java初學者布爾問題

[英]Java Beginner Boolean Question

好的,可以說我有boolean x = false 如果我有一個循環說while (!x) ,這意味着x不是false(true)還是x不是true(false)嗎?

編輯:好的,我有點困惑,我想我得到了不同的答案。 所以如果我有

 int x=0;
 boolean add1=false;
 while (!add1){
        x=1;
}

在這種情況下,x的最終值是多少?

x=false;
while (!x)

x的值代替

while(!false)

現在! 是邏輯補碼運算符,它會反轉布爾值,所以我們得到

while(true)  

因此,我們一直循環直到xfalse或直到!xtrue

請注意,變量的值可以在循環主體中更改,從而導致循環中斷。 考慮一個典型的搜索程序,該程序使用一個名為found的布爾變量:

found = false;  // initialize found to false.
while(!found) { // keep looping till key is not found.
  ...
  if(key is found) {
    found = true; // key found...make found true. 
  }
}

更新:

在您更新的問題中, add1最初為false所以!add1true因此我們進入while循環並將x更改為1 由於add1的值在循環中不會更改,因此不會breakreturn您將無限循環。

只要!x為真,循環就會重復。 換句話說,只要x為假,它就會重復。

始終檢查布爾條件是否為真。 因此, while (!x)表示x不為真,即x為假。

更新:您發布的代碼是一個無限循環,因為!add1評估為true,並且在循環內從未更改。

我感到沒有人真正(試圖)解釋它的意思

while (!x)並不真正意味着什么。 這只是計算機的一些說明。 這並不意味着在x為true或false或諸如此類的情況下進行填充。 !x是一個表達式,如果x = false ,則該表達式產生true 計算機實際上通過應用來計算true ! 關於x的值: false

while(!x)並不意味着“當x等於false時運行”。 它的含義類似於“如果將變量x的真值取反則運行,則運行”。 根據經驗,我們知道(或得知)它與“僅在x等於false時運行”相同。 就像while (!(x && !x))意味着(?)“始終運行”。 您可以通過嘗試x的所有可能值並記住使表達式等於true的那些值來查看此情況。 有一天,您將只知道它的“含義”。

是做什么的,它如何工作的 ,不是什么意思 ,對不對?

如果add1為false,則while(!add1)運行。 由於add1始終為false,因此x始終等於1。

只要x = false,循環將繼續迭代。 如果x = true,則循環將結束。

讓我們用red sky替換x 當天空不是紅色時, red sky = false將被評估為true 反復詢問red sky值是否不正確 (當然,只要天空保持藍色),就會導致循環重復。

我認為您在這里有代碼味道。

我更喜歡使用簡單的while條件,以保持代碼的可讀性。 因此,如果您以如下邏輯結尾:

boolean is_something = false;
while (!is_something) {
    ...
}

也許最好同時反轉變量的含義及其默認值,以消除while條件中的否定:

boolean is_not_something = true;
while (is_not_something) {
    ...
}

請注意,這是一個非常普通的示例。 通常,您不需要在變量名稱中使用明確的取反。 如果您有一個名為is_empty的變量,則不is_not_empty其稱為is_not_empty ,而可以將其稱為is_full

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM