1. ホーム
  2. java

[解決済み] 文字列インデックス境界外例外 java

2022-02-05 15:34:34

質問内容

クラス内から関数を呼び出すと、以下のエラーが発生します。 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外: -1 システムプリントでsubstring()関数に渡している入力を確認しましたが、すべて正しいようです。isContained()関数は、パラメータとして渡された部分文字列が単語のリストに含まれているかどうかを定義するブール値を返します。私のコードは

for(int i=0; i<=size; i++)
    for(int j=i+1; j<=size; j++)
        if(isContained(str.substring(i,j-i)))
            System.out.println(str.substring(i,j-i));

ここでsizeは関数で渡す文字列(str)の大きさです。

どのように解決するのですか?

を呼び出しています。 str.substring(i, j-i) という意味です。 substring(beginIndex, endIndex) ではなく substring(beginIndex, lengthOfNewString) .

このメソッドの前提の1つは endIndex が大きいか等しい場合 beginIndex でない場合、新しいインデックスの長さは負となり、その値は StringIndexOutOfBoundsException .

たぶん、このメソッドを次のように変更する必要があります。 str.substring(i, j) ?


また、もし size の長さは str では

for (int i = 0; i <= size; i++)

は、おそらく

for (int i = 0; i < size; i++)