gpt4 book ai didi

java - If-Else 的 Else 语句有时不会被调用吗?

转载 作者:行者123 更新时间:2023-11-30 07:08:15 29 4
gpt4 key购买 nike

我的问题很简单:

<小时/>
  • 是否有可能 else 语句在某些情况下无法得到保证实例(不包括调用中断、继续或返回的时间)事先)?

例如:在此代码中,末尾有一个 else 语句,并带有 return 调用,但出现错误:[此方法必须返回 Boolean 类型的结果]。就好像如果“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));
}
}

最佳答案

您的else return palindrome(s.substring(0, s.length()-1));语句对应于内if(s.toLowerCase().trim().charAt(s.length()-1) >= 'a' && ...语句,因此外部 if-else-if block 没有 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)) 的条件时为 false,您没有 return 语句。

您可以考虑添加一个最终的 return 语句作为该方法的最后一个语句,而不是为每个 if 语句匹配一个 else 子句。它可以简化您的代码。

关于java - If-Else 的 Else 语句有时不会被调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39697123/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com