2016-09-26 2 views
1

내 질문은 간단하다 :If-Else의 Else 문을 언젠가 호출 할 수 없습니까?


  • 이 가능한 다른 문 (휴식, 계속 또는 반환 사전 를 호출 할 때 제외) 일부 경우에 보장 할 수 없습니다입니까?

예를 들어,이 코드에서는 return 호출과 함께 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(s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(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 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)); 
} 

에 변경할 수 있습니다 false이면 return 문이 없습니다.

각 if 문에 else 절을 ​​대응하는 대신 최종 return 문을 메서드의 마지막 문으로 추가하는 방법을 고려해 볼 수 있습니다. 코드를 단순화 할 수 있습니다.

+0

오 이런! 서신! 나머지는 여전히 안정된 성명서이고, 나는 중년기 위기를 겪었고 '다른 것'에서 희망을 잃었습니다. 나는 그를 믿을 수있어서 기뻐. –

+0

@JasonIvey 귀찮은 코딩 스타일로 무엇을 해왔는지 짐작하십시오. 당신은 중년기 위기에 빠지게되었습니다. 같은 경로에서 계속하면 어느 시점에서 자살을 할 것입니다. 진지한 남자, 스타일은 유행뿐만 아니라 중요합니다. –

+0

알아요 ... 어제 int 배열을 선언했습니다 (int ar []) ... 작동하지만 ....하지만 자체 해를 더 악화시키고 있습니다 ... 곧 재귀를 사용할 것입니다. 난 더 느린 알고리듬을 좋아하기 때문에 복잡한 방정식이 생겨요. 인간이 기계보다 똑똑하다는 느낌이 들게합니다.이 길은 결국 x, y, z의 모든 변수로 이어질 것입니다. 그렇다면 자살은 이 회전하는 푸른 바위로부터의 방출, 오하이이 탄소 풍부 회전하는 푸른 바위 ... 어쩌면 그것이 인간성이 어떻게 끝났는 지 ... 잘못 둔 다른 문장들 ... –