如果单词“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;
}
答案 0 :(得分:2)
在您的代码中i
从0
转到length-1
,然后尝试substring(i, i+6)
。当i
高于length-6
时,这将导致超出范围的异常。将循环条件更改为str.length()-6
应解决此问题。
检查length
高于11
在循环内部看起来不正确。
答案 1 :(得分: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;
}