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

时间:2016-04-21 18:26:58

标签: java string return guard clause

我想知道return str.substring(1,4).equals("bad");else if(len>=4)正在做什么。我认为if语句是一个保护条款,但我不是100%。我可以解释一下这里到底发生了什么吗?如何读取输出“false”?

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

hasBad(“badxx”)→true

hasBad(“xbadxx”)→true

hasBad(“xxbadxx”)→false

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

2 个答案:

答案 0 :(得分:2)

if(str.substring(0, 3).equals("bad"))是容易的部分。 “如果”坏“是String的开头,则返回true。

return str.substring(1, 4).equals("bad")实质上意味着,“如果在第一个字符后发生'坏'则返回true,否则返回false”。这基本上是

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

因为if已经计算了一个布尔值(if里面会出现一个布尔值),没有理由告诉它返回“如果为true则为true,否则为false”,你可以返回布尔值直接。

答案 1 :(得分:0)

您也可以尝试其他方式,例如下面的方式

package com.hmkcode;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.html2pdf.HtmlConverter;

public class App 
{
    public static final String HTML = "<h1>Hello</h1>"
        + "<p>This was created using iText</p>"
        + "<a href='hmkcode.com'>hmkcode.com</a>";

    public static void main( String[] args ) throws FileNotFoundException, IOException {
        HtmlConverter.convertToPdf(HTML, new FileOutputStream("string-to-pdf.pdf"));
        System.out.println( "PDF Created!" );
    }
}