簡體   English   中英

.equals 與其他布爾函數

[英].equals with other Boolean functions

在我的程序的一小部分中,我試圖驗證是否有人輸入了 M、m、F、f 並且在大多數情況下我得到了它,但是當我將這些語句放在一起時似乎有些錯誤。 例如,

   String _gender = "M";
   if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase())){
      System.out.println("try again");
   }else 
      System.out.println("success");

它告訴我再試一次,但是當我把它寫成:

  String _gender = "M";
   if(!"m".equals(_gender.toLowerCase())){
      System.out.println("try again");
   }else 
      System.out.println("success");

它給了我一個成功。 我不知道這是否與我使用 or 的方式有關,但這就是我的猜測。 我還認為這可能與支票同時檢查兩者或某事的事實有關。 Idk 我在這方面已經有一段時間了,這讓我感到困惑。

有邏輯錯誤。 當 equal() 結果都為假時,它應該進入“再試一次”。

String _gender = "M";
if(!"m".equals(_gender.toLowerCase()) && !"f".equals(_gender.toLowerCase())){
  System.out.println("try again");
}else 
  System.out.println("success");

讓我們評估您的代碼:

String _gender = "M";
if(!"m".equals(_gender.toLowerCase())||!"f".equals(_gender.toLowerCase()))

if(!true || !false) => if(false || true) => true

現在您了解了獲得輸出的原因,請try again

現在,讓我們修復它:

這樣做

String _gender = "M";
if (!("m".equals(_gender.toLowerCase()) || "f".equals(_gender.toLowerCase()))) 

其計算結果為 if (!(true || "f".equals(_gender.toLowerCase()))) => (!(true)) => false

這將為您提供預期的輸出, success

暫無
暫無

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

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