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

2 回答 2

2

在您的代码i中从0to 开始length-1,然后尝试采取substring(i, i+6). When iis above length-6,这将导致越界异常。将循环条件更改为str.length()-6应该可以解决此问题。

在循环内检查lengthto 在上面看起来不正确。11

于 2013-03-17T14:49:11.280 回答
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;
}
于 2013-03-17T15:49:46.253 回答