2016-09-26 2 views
1

Моего вопроса просто:Может ли оператор If-Else Else когда-нибудь не называться?


  • возможно ли это другое заявление не гарантируется в некоторых случаях (за исключением, когда перерыв, продолжить или возвращение называется заранее)?

Например: в данном Кодексе другое заявление следует в конце с обратным вызовом, но ошибка: [Этот метод должен возвращать результат типа Boolean]. Это похоже на возможность того, что else не будет вызываться, если оператор if if является ложным.

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, прежде чем вы начнете с части else :) –

+1

О, черт возьми, Можете ли вы отредактировать код, чтобы вначале создать один 's.toLowerCase(). Trim()'? Вы увидите лучшие совпадающие (или не соответствующие) фигурные скобки. –

+0

Спасибо, я вижу это сейчас! Спасибо, что поддержали сообщество и запустили Мадху. Я знаю Адриана, я хочу, но это классное задание, и мой Профессор не указал никаких местных жителей! –

ответ

1

Ваше else return palindrome(s.substring(0, s.length()-1)); утверждение соответствует внутренней if(s.toLowerCase().trim().charAt(s.length()-1) >= 'a' && ... заявления, так что ваш внешний если-иначе-если блок не имеет никакого другого заявления. Вы должны добавить один (или переместить это другое заявление там, если это то, что требует логика).

Например, вы можете изменить

... 
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)); 
} 

Конечно, это оставит вас с некоторыми путей выполнения без возвращения заявления - например, когда условие if(s.toLowerCase().trim().charAt(0) == s.toLowerCase().trim().charAt(s.length()-1)) является false, у вас нет оператора возврата.

Вместо сопоставления предложения else для каждого оператора if вы можете рассмотреть возможность добавления конечного оператора возврата в качестве последнего оператора метода. Это может упростить ваш код.

+0

О, черт! переписка! Так что все еще остается стабильным заявлением, у меня был кризис среднего возраста и я потерял надежду на «еще». Рад узнать, что я все еще могу доверять ему. –

+0

@JasonIvey Вы грубый, посмотрите, что вы сделали с вашим неряшливым стилем кодирования? Вы подтолкнули себя к кризису в середине жизни. Если вы продолжите путь по тому же пути, вы в какой-то момент получите самоубийство. Серьезно человек, стиль имеет значение не только в моде. –

+0

Я знаю ... Я объявил массив int как вчера (int ar []) ... Он работает, но ... но вред сам себе ухудшается ... скоро я собираюсь использовать рекурсию для сложные уравнения, потому что мне нравятся более медленные алгоритмы .. заставляет меня чувствовать, что люди по-прежнему умнее машин ... Этот путь, на котором я нахожусь, в конечном итоге приведет ко всем моим переменным: x, y и z ... Тогда самоубийство будет просто релиз из этой вращающейся голубой скалы, о, этот этот богатый углеродом спиннинг синей скалы ... Может быть, так закончилось человечество ... неуместные слова ... –