Java 嵌套在if语句中的第二个return语句

Java 嵌套在if语句中的第二个return语句,java,string,return,guard,clause,Java,String,Return,Guard,Clause,我想知道什么返回str.substring(1,4).equals(“bad”)=4),则代码>在中执行。我认为if声明是一个保护条款,但我不是100%。我能解释一下这里到底发生了什么吗?如何读取以输出“false” 给定一个字符串,如果字符串中从索引0或1开始出现“bad”,例如“badxxx”或“xbadxx”,但不是“xxbadxx”,则返回true。字符串可以是任何长度,包括0。注意:使用.equals()比较两个字符串 哈斯巴德(“badxx”)→ 真的 哈斯巴德(“xbadxx”)→

我想知道什么
返回str.substring(1,4).equals(“bad”)=4)
,则代码>在
中执行。我认为if声明是一个保护条款,但我不是100%。我能解释一下这里到底发生了什么吗?如何读取以输出“false”

给定一个字符串,如果字符串中从索引0或1开始出现“bad”,例如“badxxx”或“xbadxx”,但不是“xxbadxx”,则返回true。字符串可以是任何长度,包括0。注意:使用.equals()比较两个字符串

哈斯巴德(“badxx”)→ 真的

哈斯巴德(“xbadxx”)→ 真的

哈斯巴德(“xxbadxx”)→ 假的

public boolean hasBad(String str)
{
    int len = str.length();
    if(len == 3 && str.equals("bad"))
        return true;
    else if(len >= 4)
    {
        if(str.substring(0, 3).equals("bad"))
            return true;
        return str.substring(1, 4).equals("bad");
    }
    else
        return false;
}
if(str.substring(0,3).equals(“bad”)
是最简单的部分。“如果“bad”是
字符串的开头,则返回true

return str.substring(1,4).equals(“bad”)
的基本意思是,“如果‘bad’出现在第一个字符之后,则返回true,否则返回false”。这基本上是

if(str.substring(1, 4).equals("bad")) return true;
else return false; 
因为
if
已经计算了一个布尔值(if中的内容会产生一个布尔值),所以没有理由告诉它返回“true if true,else false”,您可以直接返回布尔值。

if(str.substring(0,3).equals(“bad”)
是最简单的部分。”如果“bad”是
字符串的开头,则返回true

return str.substring(1,4).equals(“bad”)
的基本意思是,“如果‘bad’出现在第一个字符之后,则返回true,否则返回false”。这基本上是一条捷径

if(str.substring(1, 4).equals("bad")) return true;
else return false; 

因为
if
已经计算了一个布尔值(if中的内容会产生一个布尔值),所以没有理由告诉它返回“true if true,else false”,您可以直接返回布尔值。

您也可以用其他方式尝试,如下面的一种

public static boolean hasBad(String str) {
    for (int i = 0; i < str.length() - 1; i++) {

        if (str.length()>=3 && str.charAt(0) == 'b' || str.charAt(1) == 'b' ) {

            if (str.substring(i).contains("bad")) {

                return true;
            }
        }
    }
    return false;
}
公共静态布尔hasBad(字符串str){
对于(int i=0;i=3&&str.charAt(0)='b'| | str.charAt(1)='b'){
if(str.substring(i).contains(“bad”)){
返回true;
}
}
}
返回false;
}

您也可以用其他方式尝试,如下面的一种

public static boolean hasBad(String str) {
    for (int i = 0; i < str.length() - 1; i++) {

        if (str.length()>=3 && str.charAt(0) == 'b' || str.charAt(1) == 'b' ) {

            if (str.substring(i).contains("bad")) {

                return true;
            }
        }
    }
    return false;
}
公共静态布尔hasBad(字符串str){
对于(int i=0;i=3&&str.charAt(0)='b'| | str.charAt(1)='b'){
if(str.substring(i).contains(“bad”)){
返回true;
}
}
}
返回false;
}

您想知道什么
返回str.substring(1,4).equals(“bad”)
Dos?如果你不知道这段代码是做什么的,为什么不问问编写它的人为什么代码是这样写的呢。注意:这与返回str.matches(“.?bad.*”)相同返回str.substring(1,4).equals(“bad”)
Dos?如果你不知道这段代码是做什么的,为什么不问问编写它的人为什么代码是这样写的呢。注意:这与返回str.matches(“.?bad.*”)相同爆炸声响起。谢谢你的解释,很有道理。炸药爆炸了。谢谢你的解释,很有道理。