2016-04-21 67 views
0

我想知道return str.substring(1,4).equals("bad");else if(len>=4)中在做什麼。我認爲if語句是一個警衛條款,但我不是100%。我能解釋一下究竟發生了什麼嗎?這是如何讀取輸出「假」?嵌套在if語句中的第二個return語句

給定一個字符串,如果字符串中的索引0或1開始出現「bad」,例如「badxxx」或「xbadxx」而不是「xxbadxx」,則返回true。該字符串可以是任意長度,包括0.注意:使用.equals()來比較2個字符串。

hasBad( 「badxx」)→真

hasBad( 「xbadxx」)→真

hasBad( 「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; 
} 
+0

你想知道什麼'return str.substring( 1,4).equals(「bad」);'是嗎? – MeetTitan

+1

如果你不知道這段代碼是做什麼的,爲什麼不問那個誰寫了它爲什麼代碼是寫的方式。注意:這與'return str.matches(「。?bad。*」);' –

回答

2

if(str.substring(0, 3).equals("bad"))是容易的部分。 「如果'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已經評價一個boolean(什麼走了進去如果結果爲一個布爾值),沒有理由告訴它返回「true如果爲true,否則爲false」,你可以直接返回布爾值

+0

相同,並且繁榮是炸藥。感謝您的解釋,非常有道理。 –