そして。問題のない try-catch ブロックがありますが、テキスト ファイルの最初の行をインポートすると、文字列インデックスが範囲外です:33 と表示されます。
その行は「The Dentist Pulled My Tooth Out」です。私が行っているのは、for ループを使用して、行の最後に到達するまで、行内のすべての文字を評価することです。文字が母音の場合、母音整数をインクリメントします。それ以外の場合は、空白のスペースをチルダ (~) に変更します。私が知りたいのは、文字列が範囲外であると表示される理由と、テキスト行の空白をファイルからチルダに変更する方法です。自分で別のファイルに出力することを理解できます(それが私がしなければならないことです)。なぜ範囲外だと言っているのか混乱しています。以下にプログラム全体を貼り付けました。
このプログラムの目的は、テキスト ファイルを 1 文字ずつ評価し、母音の数を数えることです。また、空白をチルダに変更してから、別のテキスト ファイルに再出力する必要があります。
コードは以下のとおりです。
import java.io.File;
import java.util.Scanner;
import java.io.IOException;
import java.io.FileWriter;
public class Vowels {
public static void main(String[] args) {
Scanner inFile;
File dentist = new File("poetry.txt");
int vowels = 0;
try {
for (int i = 0; i >= 0; i++) {
inFile = new Scanner(new File("poetry.txt"));
String str1 = inFile.nextLine();
for (int a = 0; a >= 0; a++) {
String start;
start = str1.substring(a, a + 1);
if (start.equalsIgnoreCase("a") == true)
vowels++;
else if (start.equalsIgnoreCase("e") == true)
vowels++;
else if (start.equalsIgnoreCase("i") == true)
vowels++;
else if (start.equalsIgnoreCase("o") == true)
vowels++;
else if (start.equalsIgnoreCase("u") == true)
vowels++;
else if (start.equalsIgnoreCase(" "))
start = " ";
}
}
} catch (IOException i) {
System.out.println("Error");
}
}
}