文字列内の単語または句を検索するfindText()メソッドを作成しようとしています。Java。単語または句の検索方法エラー:文字列のインデックスが範囲外です
static String usrStr = "There was was once a boy named Timmy. Timmy liked to play in the park.";
public static void findText() {
int matchCntr = 0;
int numInstances = 0;
String phrase = "";
System.out.println("Enter a word or phrase to be found: ");
phrase = scnr.nextLine();
for (int i = 0; i < usrStr.length(); i++) {
if (usrStr.charAt(i) == phrase.charAt(matchCntr)) { //FIX ME
matchCntr++;
if (matchCntr == phrase.length()) {
numInstances++;
matchCntr = 0;
}
}
else {
matchCntr = 0;
}
}
System.out.println("\"" + phrase + "\" instances: " + numInstances);
return;
それが正しく働いていた場合、私はこのouputを取得する必要があります。
Enter a word or phrase to be entered: <Timmy>
"Timmy" instances: 2
をしかし、私はこのコードを実行するとき、私はこのエラーを取得します。コードの本体でエラーが発生した場所を// FIX MEでマークしました。
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
私は、文字列「というフレーズは、」少なくとも38文字ではありませんが、それでも私は、コードを修正する助けにはならないことをするので、このエラーはおそらくであることを読みました。 StringIndexOutOfBoundsExceptionエラーを回避しながら、意図したとおりに動作するようにこのコードを修正する方法はありますか?
実行中にエラーは発生しませんでした。 for(i = 0; i
iNan
これは大きなプログラムの一部ですが、私は初期化を含めるのを忘れていましたが、メソッドの前に静的intとして初期化されているはずです。ありがとう! –
私はこれを仮想マシンで実行しようとしているのですか? –