【发布时间】:2017-08-28 07:51:29
【问题描述】:
我写了下面的代码来回答上面的问题。谁能告诉我哪里出错了。
我希望看到代码返回数组中每个元素在文本文件中出现的确切次数。不考虑空格、制表符、换行符等。
public class counter {
public static void main(String[] args) throws FileNotFoundException {
String[] wordname;
wordname = new String[] {"harry","ron","george","fred"};
File file = new File("file.txt");
Scanner scanner = new Scanner(file);
for(int i=0; i < wordname.length; i++){
scanner.useDelimiter(wordname[i]);
int occurences = 0;
while(scanner.hasNext()){
scanner.next();
occurences++;
}
System.out.println(wordname[i] + ": " + occurences);
}
scanner.close();
}
}
输出:
哈利:6
罗恩:1
乔治:0
弗雷德:0
文件:
哈利·哈利·罗恩·乔治·哈利·哈利
harry harry har
ron ron ron ron Fred
弗雷德弗雷德乔治
哈利
【问题讨论】:
-
你的输出是什么?能给我举个例子吗?似乎它可能只经历一次。
-
同时显示文本文件中的内容。
-
输出:harry:6 ron:1 george:0 fred:0 文件:harry harry ron george harry harry harry harry har ron ron ron fred fred fred george harry
-
正如您的代码一样,您正在尝试读取每个单词的整个文件。在这种情况下,您应该在
for循环内初始化并关闭Scanner,而不是在外部。 -
糟糕的是,我初始化了它并且它有效!谢谢:)
标签: java arrays java.util.scanner java-io