计算文本文件中的特定单词 - Java

时间:2014-11-24 13:36:37

标签: java file-read

我有一个文本文件,我想计算我定义的特定单词的总数。

我的代码:

    String word1 = "aa";
    String word2 = "bb";

    int wordCount = 0;

     //creating File instance to reference text file in Java
    File text = new File("D:/project/log.txt");

    //Creating Scanner instnace to read File in Java
    Scanner s = new Scanner(text);

    //Reading each line of file using Scanner class
    while (s.hasNext()) {
        totalCount++;
        if (s.next().equals(word1) || s.next().equals(word2)) wordCount++;
    }

    System.out.println("Word count:  " + wordCount);

然而,它只计算'aa'的数量。它不计算'bb'的数量。 可能是什么问题?

7 个答案:

答案 0 :(得分:3)

正如其他人说的那样:你打电话给next()两次的问题的根源。只是提示如何使你的算法易于扩展:

Set<String> words = new HashSet<>(Arrays.asList("aa", "bb"));
...
while (s.hasNext()) {
    totalCount++;
    if (words.contains(s.next())) wordCount++;
}

答案 1 :(得分:2)

您在s.next()条件下拨打if两次,每次通话都会转到下一个字。 将while循环更改为

while (s.hasNext()) {
    totalCount++;
    String word = s.next();
    if (word.equals(word1) || word.equals(word2)) wordCount++;
}

答案 2 :(得分:1)

尝试这种方式:

while (s.hasNext()) {
    totalCount++;
    String word = s.next()
    if (word.equals(word1) || word.equals(word2)) wordCount++;
}

答案 3 :(得分:1)

每次拨打s.next()时,它都会找到下一个字,因此每个循环都会测试一个字是否是&#34; aa&#34;或者下一个单词是&#34; bb&#34;。在循环中,您需要调用s.next(),将结果存储在变量中,然后用两个单词检查。

答案 4 :(得分:1)

您的问题是您要拨打s.next()两次。每次调用都会从输入中读取一个新令牌。

将其更改为:

while (s.hasNext()) {
    String str = s.next();
    totalCount++;
    if (str.equals(word1) || str.equals(word2)) wordCount++;
}

答案 5 :(得分:1)

你在if条件下调用next()两次。

尝试:

String word = s.next();

if ( word.equals(word1) ....

答案 6 :(得分:0)

    String[] array = new String[]{"String 1", "String 2", "String 3"};

    for(int i=0; i < array.length; i++)
     {
                    System.out.println(array[i]);
                    wordCount=0;
                    while (s.hasNext()) 
                     {
                         totalCount++;
                         if (s.next().equals(array[i])) 
                         wordCount++;
                     }
                     System.out.println("each Word count:  " + wordCount);
     }