如何将文本文件存储到数组中并计算其中包含的单词数

时间:2013-09-30 21:31:11

标签: java arrays sorting

我得到了一份作业,我需要计算文件中的单词数量,并输出相同数量的单词。就像整篇文章中的“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 

2 个答案:

答案 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