0

「パン」という単語が単語の両側に表示される場合、文字列を返そうとしています。たとえば、 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は から0に行きlength-1、次に を取ろうとしますsubstring(i, i+6)。がiを超えるlength-6と、範囲外の例外が発生します。ループ条件を に変更すると、str.length()-6この問題に対処できます。

がループ内lengthで上にあることのチェックが正しくないようです。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 に答える