我试图打开一个文件(words.txt),然后计算里面的元音数量。这是我的代码:
Scanner input = new Scanner("words.txt");
String fileContent = "";
while (input.hasNext()) {
fileContent += input.next() + " ";
}
input.close();
char[] charArr = fileContent.toCharArray();
int counter = 0;
for(int i = 0; i < charArr.length; i++)
{
if(charArr[i] == 'a' || charArr[i] == 'e' || charArr[i] == 'i' || charArr[i] == 'o' || charArr[i] == 'u')
counter++;
}
System.out.println(fileContent);
当我打印filecontent变量时,它告诉我它所持有的字符串是&#39; words.txt&#39;。它实际上并没有打开文件,只是读取它的名称。想法?
答案 0 :(得分:2)
有一个Scanner
constructor that takes a String
,但它只是直接从String
读取。
构造一个新的Scanner,它生成从指定字符串扫描的值。
您应该从文件名中创建File
并将File
传递给另一个Scanner
constructor that takes a File
:
构造一个新的Scanner,它生成从指定文件扫描的值。
Scanner input = new Scanner(new File("words.txt"));
答案 1 :(得分:0)
Scanner类采用字符串;你永远不会给它一个实际文件的内容。
答案 2 :(得分:0)
试试这个
文件文件=新文件(&#34; word.txt&#34;); 然后在scnner中打开文件
答案 3 :(得分:0)
您可能希望使用正则表达式进行模式匹配,而不是使用if解决方案:
int counter = 0;
try (final Scanner in = new Scanner(Paths.get("src/words.txt"))) {
in.useDelimiter("[aeiouAEIOU]");
while (in.hasNext()) {
in.next()
counter++;
}
}
System.out.println("Number of vowels: " + (counter - 1));
或者对于更短的版本,请使用 for-loop :
...
for (counter = 0; in.hasNext(); in.next(), counter++) {
//do additional stuff like counting for statistics eg.
}
...