0

文中の単語を数えるプログラムを作っています。スペースはカウントされず、句読点はカウントされません。入力を受け取り、回答を出力するモジュールを使用しています。しかし、それが私のプログラムがこれを印刷している理由ではないと思うので、それについて心配しないでください

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
String index out of range: 11
    at java.lang.String.charAt(String.java:658)
    at WordCount.main(WordCount.java:20)
public class WordCount{
    public static void main(String[] args){

        System.out.println("Please enter sentence");
        String sentence= IO.readString();

        System.out.println("Please enter minimum word length");
        double minword= IO.readInt();

        String word;
        int wordletter=0;
        int wordcount= 0;

        int count= -1;
        int end= sentence.length();

        do{
            count++;
            char space= sentence.charAt(count);

            if(Character.isLetter(space)){
                boolean cut= Character.isSpaceChar(space);
                if(cut== true)
                    word=sentence.substring(0,count);
                    count= 0;
                    wordletter= word.length();
                    end= end- wordletter;

                    if(wordletter< minword){
                        ;
                    }else{
                        wordcount= wordcount+1;
                    }
                }else{
                    ;
                }
            }else{
                ;
            }
        }while(count!= end);

    IO.outputIntAnswer(wordcount);

    }
}
4

2 に答える 2

0

char space= sentence.charAt(count);ループ条件が何度も実行されているため、例外が発生しています。while 条件で、等しくないのではなく、より小さいが必要です。

while (count - 1 < end);

奇妙な方法でループを構築したため、マイナス 1 が必要です。通常、次のようなものを使用します。

int end= sentence.length();
count = -1;
while (++count < end) {

}

あるいは、さらに良い。forループを使用します。

int end = sentence.length();
for (int i = 0; i < end; i++ {
    // ...
}
于 2013-03-04T02:43:56.367 に答える
0

簡単な答えは、配列にはarray.lengthインデックスが である要素があるということ0, 1, ... array.length - 1です。あなたのコードは(書かれているように) indexs を試すつもり0, 1, ... array.lengthです。

ループを終了するために使用している条件について考えてください。


しかし、プログラムを修正するにはそれだけでは不十分です。少なくともあと 2 つのバグが見られます。これは明らかに学習課題であるため、それらを自分で見つけて修正することをお勧めします。IDE のデバッガーを使用してプログラムを実行し、コードを "1 ステップ" 実行して、その動作を確認することをお勧めします。

于 2013-03-04T02:50:58.953 に答える