2017-05-14 51 views
1

所以我試圖做到這一點,如果聲明多個條件,其中爲了使密碼合格,它應該滿足5件事情中的4件。我得到一個錯誤說最有效的方法來檢查if語句中的所有條件?

操作& &未定義的參數類型布爾,詮釋

注:發生錯誤,在我的方法的底部,(if語句錯誤)

 public void passRequirments(){ 


     int digit,symbol,upper,lower; 
     int countDigit, countSymbol,countUpper,countLower; 
     countDigit = 0; 
     countSymbol= 0; 
     countUpper = 0; 
     countLower = 0; 

     for (int i = 0; i < passChar.length; i++){ 
     digit = (int)passChar[i] ; 
     symbol = (int)passChar[i]; 
     upper = (int)passChar[i]; 
     lower = (int)passChar[i]; 

     if(digit >=48 && digit <= 57){ 
      countDigit = 1; 
      System.out.println(countDigit); 
     } 
     else if(symbol >=32 && symbol <= 47 || symbol >=58 && symbol <= 64 || 
       symbol >=91 && symbol <= 96 || symbol >=123 && symbol <= 126){ 
      countSymbol = 1; 
      if (countSymbol == 1){ 

      System.out.println("hello"); 
      } 
     } 
     else if(upper >=65 && upper <= 90){ 
      countUpper = 1; 
     } 
     else { 
      countLower = 1; 
     } 

} 
     //this is where i'm running into error 

     if(passChar.length >= 8 && countDigit == 1 && countSymbol && countUpper == 1 || 
      passChar.length >= 8 && countDigit == 1 && countSymbol && countLower == 1 || 
      passChar.length >= 8 && countDigit == 1 && countLower && countUpper == 1 || 
      passChar.length >= 8 && countSymbol == 1 && countLower && countUpper == 1){ 

     System.out.println("Password Qualfies!"); 
     passwordScore = passwordScore + 10; 

     } 
     else { 

     System.out.println("Password Doesn't Qualify!"); 


     } 


    } 
+2

你'&& countSymbol'和'&& countLower',這些都是'int's類似的符號會工作。你不能在'int's上執行'&&',只能在'boolean's上執行。 – user1803551

+0

什麼?我不明白 –

+1

'countLower == 1'是一個'boolean' - 無論是'true'還是'false'。 'countLower'是一個'int' - 一個數字。 '&&'之間的東西需要是布爾型的。 – user1803551

回答

3

在java中,if語句中的參數應該嚴格爲boolean

我看到你正在檢查的只是countSymbol而不是它應該是countSymbol == 0countSymbol > 0根據您的要求。

if(passChar.length >= 8 && countDigit == 1 && countSymbol==0 && countUpper == 1 || 
                ^change this 

讓其他Or條件以及

+0

謝謝你,你也抓住了我的錯誤 –

0

類似的變化如果countSymbol && countUpper == 1你想說這兩個countSymbol countUpper應該等於1,這不是如何&&作品。你必須完整寫出兩個條件:countSymbol == 1 && countUpper == 1。與countLower && countUpper == 1相同。

有趣的事實:如果你在寫COBOL :)

相關問題