2016-09-26 60 views
1

我的問題很簡單:If-Else的Else語句有時不能被調用嗎?


  • 是否有可能else語句不在某些 情況下保證(不含時,休息一下,繼續或退回被稱爲 事先)?

例如:在此代碼中,else語句在最後跟隨一個返回調用,但錯誤:[此方法必須返回布爾類型的結果]。就好像有一種可能性,如果「if」語句是錯誤的,else就不會被調用。

public static boolean palindrome(String s){ 
    if (s.length() == 1){ 
    return false; 
    } 
    else if (s.length() == 2){ 
     if(s.toLowerCase().trim().charAt(0) >= 'a' && s.toLowerCase().trim().charAt(0) <= 'z' && s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(s.length())){ 
     return true; 
     } 
     else return false; 
    } 
    else if(s.toLowerCase().trim().charAt(0) >= 'a' && s.toLowerCase().trim().charAt(0) <= 'z'){ 
     if(s.toLowerCase().trim().charAt(s.length()-1) >= 'a' && s.toLowerCase().trim().charAt(s.length()-1) <= 'z'){ 
     if(s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(s.length()-1)) 
      return true && palindrome(s.substring(1,s.length()-1)); 
     } 
     else return palindrome(s.substring(0, s.length()-1)); 
    } 
    } 
+0

關閉其他else if循環括號之前,你開始與其他部分:) –

+1

哦,天哪,你可以調整代碼做一個單一的s.toLowerCase()。trim()'在開始?你會看到更好的匹配(或不匹配)大括號。 –

+0

謝謝,我現在看到了!感謝您保持社區的運行並運行Madhu。我知道阿德里安,我想,但這是班級任務,我的教授沒有指定當地人! 「 –

回答

1

else return palindrome(s.substring(0, s.length()-1));語句內if(s.toLowerCase().trim().charAt(s.length()-1) >= 'a' && ...語句對應,所以你的外在的if-else-if塊沒有else語句。你應該添加一個(或者在那裏移動那個else語句,如果這是邏輯要求的話)。

例如,你可以改變

... 
else if(s.toLowerCase().trim().charAt(0) >= 'a' && s.toLowerCase().trim().charAt(0) <= 'z'){ 
    if(s.toLowerCase().trim().charAt(s.length()-1) >= 'a' && s.toLowerCase().trim().charAt(s.length()-1) <= 'z'){ 
    if(s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(s.length()-1)) 
     return true && palindrome(s.substring(1,s.length()-1)); 
    } 
    else return palindrome(s.substring(0, s.length()-1)); 
} 

... 
else if(s.toLowerCase().trim().charAt(0) >= 'a' && s.toLowerCase().trim().charAt(0) <= 'z'){ 
    if(s.toLowerCase().trim().charAt(s.length()-1) >= 'a' && s.toLowerCase().trim().charAt(s.length()-1) <= 'z'){ 
    if(s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(s.length()-1)) 
     return palindrome(s.substring(1,s.length()-1)); 
    } 
} else { 
    return palindrome(s.substring(0, s.length()-1)); 
} 

當然,這將讓你有沒有return語句一些執行路徑 - 例如,當if(s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(s.length()-1))條件爲假,你沒有回報聲明。

您可以考慮將最終返回語句添加爲方法的最後一個語句,而不是將else子句與每個if語句進行匹配。它可以簡化你的代碼。

+0

哦,天哪!信件!所以其他人仍然是一個穩定的聲明,我有一箇中年危機,失去了'其他'的希望。很高興知道我仍然可以信任他。 –

+0

@JasonIvey你蠻橫的,看看你用你的馬虎編碼風格做了什麼?你讓自己陷入了中年危機。如果你繼續走同樣的道路,你會在某個時候自殺。認真的人,風格不僅在時尚問題。 –

+0

我知道......我昨天宣佈了一個int數組像這樣(int ar [])...它可以工作,但是......但是自我傷害越來越糟......很快我將使用遞歸複雜的方程,因爲我喜歡較慢的算法..讓我覺得人類比機器更聰明...我所處的這條道路最終將導致我所有的變量都是x,y和z ......然後,自殺就是從這個旋轉的藍色岩石發佈,哦,這個碳富含旋轉的藍色岩石......也許這就是人類的結局......錯誤的其他陳述...... –