可以,然后呢。我有一个没有问题的 try-catch 块,但问题是当我导入文本文件的第一行时,它说字符串索引超出范围:33。
那行是“牙医拔掉了我的牙”我正在做的是使用 for 循环来评估一行中的每个字符,直到我们到达所述行的末尾。如果字符是元音,那么我增加一个元音整数。否则,如果是空格,那么我将空格更改为波浪号(~)。我想知道的是为什么它说我的字符串超出范围以及如何将文本行中的空格从文件更改为波浪号。我可以自己弄清楚将其输出到不同的文件(这是我必须做的)。我只是很困惑为什么它说它超出范围。我在下面粘贴了我的整个程序。
该程序的目标是逐个字符地评估文本文件,并计算元音的数量。此外,我必须将任何空格更改为波浪号,然后重新输出到不同的文本文件。
代码如下:
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");
}
}
}