如何计算单词在文本文件中的次数

时间:2014-03-01 19:51:27

标签: java count text-files output

我被要求编写一个程序,检查我在计算机上创建的文本文件中是否存在团队名称,并说明文件中重复了多少次?你能帮帮我吗?我已经编写了代码来检查这个单词是否存在但是不知道如何检查它出现的次数。

import java.util.*;
import java.io.*;
public class worldSeries 
{
    public boolean checkSeries () throws IOException
    {

        Scanner keyboard = new Scanner(System.in);

        boolean result = false;

        String[] winners = new String[200];

        int  i = 0 ;
        File file = new File ("WorldSeriesWinners.txt");
        Scanner inputFile = new Scanner(file);
        while ( inputFile.hasNext () && i < winners.length )
        {
            winners[i] = inputFile.nextLine(); 
            i++;
        }
        inputFile.close();

        System.out.println(" Enter the Team's name you want to check : " );

        String teamName = keyboard.nextLine();

        for ( int  index = 0 ; index < winners.length ; index ++ )
        {
            if ( teamName.equals(winners[index]))
            {
                result = true;
            }


        }
        return result;
    }

    public static void main(String[]Args)
    {
        worldSeries object1 = new worldSeries();

        try
        {
            System.out.println(" The search result for the Team's name is : " + object1.checkSeries ());
        }
        catch (IOException ioe)
        {
            System.out.println(" Exception!!! ");

            ioe.printStackTrace();
        }

    }
}

4 个答案:

答案 0 :(得分:1)

基本上,您可以重复使用现有的for循环

for(int  index = 0 ; index < winners.length ; index++){
        if ( teamName.equals(winners[index])){
            result = true;
        }
}

引入一个初始化为0的变量counter,如果团队名称匹配则递增。

此外,我建议重新构建代码。

  1. 以单独的方法读取文件的内容。让方法返回存储到String[]的{​​{1}}。
  2. 向用户询问团队名称。
  3. 检查数组String[] winners是否包含团队名称。这种情况已在您的方法winners中发生。从我之前的评论可以想象,我会将Scanner代码移动到1中描述的方法。请记住,方法名称应该描述方法中发生的事情 - 所以checkSeries()应该只检查并返回是或否。
  4. 在一个重要的新方法中重用checkSeries()的for循环。只有在checkSeries()返回true时才需要调用此方法。

答案 1 :(得分:0)

而不是result = true;,你可以在循环内增加一个计数器。

例如:

    int counter = 0;
    for ( int  index = 0 ; index < winners.length ; index ++ )
    {
        if ( teamName.equals(winners[index]))
        {
            counter = counter + 1;
        }
    }

然后,您可以将方法的返回类型更改为int并返回counter

只返回true / false的方法可以使用new方法。如果返回值为0,则返回false,否则为true。

答案 2 :(得分:0)

您可以使用带有“key”的HashMap作为单词,使用“value”作为出现次数。每当您读取一个单词时,请检查该单词在地图中是否可用并增加其值。请知道您是否需要代码示例。

答案 3 :(得分:0)

如果我是你,我会在string中读取所有文字输入一次,然后使用方法string.split(" ");

将其与白色空格分开

这将返回包含输入中所有单词的string数组。然后在Array上执行循环,并在输入中计算团队的结果。

如果您想在编写代码时获得进一步的帮助,请随时提问