-4

単語を個々の文字に分離するはずのwhileループがあります...動作しますが、存在しない部分文字列がnullかどうかを確認しようとすると、例外がスローされます...

    private static void seperateWord(String word) {
    boolean running = true;
    int count = 0;
    while (running) {
        if (word.substring(count, count + 1).equals("null")) {
            running = false;
            return;
        } else {
            letter[count] = word.substring(count, count + 1);
            System.out.println(letter[count]);
            count++;
        }
    }
}

文字列の最後に到達し、読み取るものがなくなるまで、すべての文字を正しく出力します...存在しないだけです。この例外がスローされます...

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.substring(Unknown Source)
at Class.seperateWord(Class.java:33)
at Class.main(Class.java:13)

行 33 は :: if (input.substring(count, count + 1).equals("null")) {

13 行目は、メソッドを呼び出す場所です。

入力したテキストは「abc」です

助けてくれてありがとう!

4

1 に答える 1

4

3 文字しかない文字列のインデックス 3 からインデックス 4 までの部分文字列を取得しようとしています。これが、例外が発生する理由です。

さらに、input.substring(count, count + 1).equals("null")明らかに決して真実ではありません。1 文字の文字列が、4 文字の文字列"null"とどのように等しくなるでしょうか?

String クラスの API ドキュメントを読んでください。length()文字列の長さを返すメソッドがあり、ループを停止するために使用する必要があります。またcharAt()、特定のインデックスで文字を返すメソッドもあります。

于 2013-03-10T16:23:25.157 に答える