1

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

2 回答 2

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] + " ");
}
于 2013-09-30T21:36:42.680 回答
0

因为你的帖子没有说你必须用 Java 做(虽然我猜是这样),所以我提供这个:

perl -e 'while(<STDIN>) { map { $w->{lc($_)}++; } split("\\s", $_); } map { print "$_ $w->{$_}\n"; } keys %{$w} ;' < test.txt
于 2013-09-30T22:13:50.853 回答