我得到了一份作业,我需要计算文件中的单词数量,并输出相同数量的单词。就像整篇文章中的“a”一样,它可能重复了350次。我希望你明白我的观点。
现在,我试图做一些测试并创建一个包含以下内容的文件(“test.txt”)。
Im a good boy
Hello World
A happy world it is
我要做的是将其存储到数组中以便能够计算文件中的单词。但我很难过。这就是我到目前为止所做的。
void readFile() {
System.out.println("Gi navnet til filen: ");
String filNavn = sc.next();
File k = new File(filNavn);
try {
Scanner sc2 = new Scanner(k);
while (sc2.hasNextLine()) {
String line = sc2.nextLine();
String[] m = line.split(" ");
String x = m[0];
System.out.println(x);
}
} catch (FileNotFoundException e) {
System.out.print("mmm");
}
}
但这仅输出该行的第一个单词。
我希望看到的内容与文本文件相同。但存储在一个数组中。我该怎么办?
Im a good boy
Hello World
A happy world it is
答案 0 :(得分:1)
这只会打印出第一个单词,因为这个
String[] m = line.split(" ");
String x = m[0];
System.out.println(x);
在这里,您只是将数组中的第一个单词(由拆分创建)指定给变量x,然后只打印该单词。
要打印所有需要循环数组的单词
for(int i = 0; i < m.length; i++)
{
System.out.println(m[i]);
}
要打印与您可以使用System.out.print()
的文件相同的内容。请注意,您需要将空格重新放入并且还要考虑新行。以下是一种方法:
for(int i = 0; i < m.length; i++)
{
if(i == m.length - 1)
System.out.print(m[i] + "\n");
else
System.out.print(m[i] + " ");
}
答案 1 :(得分:0)
既然你的帖子没有说你用Java做过(虽然我猜是这样的),我提供了这个:
perl -e 'while(<STDIN>) { map { $w->{lc($_)}++; } split("\\s", $_); } map { print "$_ $w->{$_}\n"; } keys %{$w} ;' < test.txt