2013-03-17 54 views
0

我試圖返回字符串,如果單詞「bread」出現在單詞的任一側,例如:getSandwich(「breadjambread」)→「jam」 但代碼我寫的不斷讓我超越例外。我怎樣才能解決這個問題? 這裏是我的代碼:此代碼中出現異常

public String getSandwich(String str) { 
    String tmp = ""; 
    String newString = ""; 
    for (int i = 0; i < str.length()-1; i++) { 
    if (str.length() >= 11 && str.substring(i, i+6).equals("bread")) { 
     tmp = str.substring(i+6); 
    } 
    if (tmp.length() > 0 && tmp.substring(i+1, i+7).equals("bread")) { 
     newString = tmp.substring(0, i); 
    } 
    } 
    return newString; 
} 

回答

2

在你的代碼i去從0length-1,然後試圖以substring(i, i+6)。當i高於length-6時,這會導致出界異常。將環路條件更改爲str.length()-6應解決此問題。

length的檢查高於11裏面的循環看起來不正確。

+0

但是,當我將其更改爲length() - 5(這是沒有越界異常時的第一個點),它將不起作用。那麼我如何解決它? – user2036340 2013-03-17 14:54:36

+0

@ user2036340我會嘗試刪除'str.length()> = 11'檢查。更簡單的解決方案是使用'str.replaceAll(「bread」,「」)'來做替換。 – dasblinkenlight 2013-03-17 14:59:29

+0

但我只想要兩個麪包之間的字符(當有兩個麪包),所以如果我只是這樣做: '公共字符串getSandwich(String str){ String newString = str.replaceAll(「bread」 ,「」); return newString; }' 它不會工作 – user2036340 2013-03-17 15:05:13

0
public static String getSandwich(String str) { 
    String newString = ""; 
    int i1 = str.indexOf("bread"); 
    int i2 = str.lastIndexOf("bread"); 
    if(i1 != i2){ 
    newString = str.substring(i1 + 5, i2); 
    } 
    return newString; 
} 
相關問題