1. ホーム
  2. java

[解決済み] スレッド "main" での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。11

2022-02-11 06:05:21

質問

このようなコードを書くと、いつもこのようなエラーが発生します。 ファイルをビルドしているのですが、実行させることができず、例外をスローするだけです。私は初心者のため、例外についてよく知らないのですが、親切に教えてください。

public static void main(String args[]) {
    String name = "Umer Hassan";
    String name1 = "Hassan Umer";
    char[] name2 = new char[name.length()];

    for (int j = 0; j <= name.length(); j++) {
        for (int i = 0; i <= name.length(); i++) {
            if (name.length() == name1.length()) {
                if (name.charAt(i) == name1.charAt(i)) {
                    name2[i] = name1.charAt(i);
                }
            }
        }
    }
}

プログラムを実行すると、次のようなエラーが表示されます。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 11
    at java.lang.String.charAt(String.java:658)
    at Anagram.main(Anagram.java:24)

解決方法は?

ループ制御変数( i / j ) が行っています。 まで name.length() - これは範囲外のインデックスです(文字列/リストの最大インデックスが len - 1 - 最初のインデックスが0であることを忘れないでください)。

を使ってみてください。 i < name.length()j < name.length() をループ条件として使用します。