5

EVerytime私はこれに似たコードを書くと、このタイプのエラーが発生します。ファイルを作成していますが、実行させていません。例外をスローするだけです。私は初心者なので、例外についてはよく知りません。親切に私を助け、私が犯している間違いを具体的に指摘します。

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)
4

4 に答える 4

4

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

代わりに、ループ条件としてi < name.length()andを使用してみてください。j < name.length()

于 2012-12-09T18:03:36.800 に答える
2

forcycleは次のように書く必要があります

for (int i = 0; i < name.length(); i++)

文字列のインデックスは、配列と同様にゼロベースであるため、0から長さ-1までの範囲があります。範囲外の長さに移動します。

于 2012-12-09T18:03:45.567 に答える
1
for (int i=0; i<=name.length();i++){

文字列インデックスは。から始まります0

例 :

String str = "abc";
int len = str.length(); //will return 3

str.charAt(3);StringIndexOutOfBoundsException charAt開始位置をスローし0ます。したがって、制限はlength-1です。

forループを次のように変更する必要がありますfor (int i=0; i<name.length();i++){

于 2012-12-09T18:11:59.813 に答える
0

これを試して:

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(j)) {
                name2[i] = name1.charAt(j);
            }
        }
    }
}

}

于 2012-12-09T18:05:28.537 に答える