簡體   English   中英

對這個循環中的括號感到困惑

[英]Confused about the brackets in this loop

這是Coding bat(Java版本)中的問題:: 給定一個int數組,如果數組在某個地方包含2,則返回true。 has22({1,2,2})→true has22({1,2,1,2})→false has22({2,1,2})→false

這是我的解決方案:

public boolean has22(int[] nums) {

  for (int i=0; i<nums.length-1;i++) {

     if (nums[i]==2 && nums[i+1]==2) {
         return true;
     }
     else {

        return false;
     } 
  }
}

這樣做時不編譯..

public boolean has22(int[] nums) {

  for (int i=0; i<nums.length-1;i++) {

     if (nums[i]==2 && nums[i+1]==2) {
         return true;
     }
     else {

     } 
  }    
    return false;

}

對不起,如果這是一個愚蠢的問題,但我對最后的括號感到困惑。

想象一下你的參數為空或為null 您的第一個方法無法編譯,因為它不會為所有情況返回boolean值。

你的第二個方法編譯,因為在迭代完成后它會在任何情況下返回一個boolean值。

  public boolean has22(int[] nums) 
     {
      for (int i=0; i<nums.length-1;i++) 
       if (nums[i]==2 && nums[i+1]==2) 
         return true;  
       return false;
     }

您可以像上面一樣編寫程序,不需要大括號。 對於每個條件語句,如果我們想要將多個語句與任何條件語句相關聯,則一個語句始終存在,然后我們提供{}大括號,例如if(某些條件)
stmt1; 不需要大括號,但如果不止一個語句那么(某些條件){stmt1; stmt2; }

所以永遠記住不止一個語句必須強制並避免問題,因為只要在同一時間關閉時打開一個括號並在其中寫入它會讓你放松一下。 謝謝asif aftab

暫無
暫無

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

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