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

Java 如何计算一个单词在文本文件中的次数,java,count,text-files,output,Java,Count,Text Files,Output,我被要求编写一个程序,检查我在计算机上创建的文本文件中是否存在团队名称,并说明在该文件中重复了多少次?你能帮帮我吗?我编写了代码来检查这个词是否存在,但不知道如何检查它存在的次数 import java.util.*; import java.io.*; public class worldSeries { public boolean checkSeries () throws IOException { Scanner keyboard = new Sca

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

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();
        }

    }
}
import java.util.*;
导入java.io.*;
公共类世界系列
{
公共布尔checkSeries()引发IOException
{
扫描仪键盘=新扫描仪(System.in);
布尔结果=假;
字符串[]winners=新字符串[200];
int i=0;
File File=新文件(“WorldSeriesWinners.txt”);
扫描仪输入文件=新扫描仪(文件);
while(inputFile.hasNext()&&i
而不是
结果=true您可以在循环中增加一个计数器

例如:

    int counter = 0;
    for ( int  index = 0 ; index < winners.length ; index ++ )
    {
        if ( teamName.equals(winners[index]))
        {
            counter = counter + 1;
        }
    }
int计数器=0;
for(int index=0;index
然后,您可以将方法的返回类型更改为
int
并返回
counter


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

基本上,您可以将现有的
重新用于
循环

for(int  index = 0 ; index < winners.length ; index++){
        if ( teamName.equals(winners[index])){
            result = true;
        }
}
for(int index=0;index
引入一个变量
计数器
,该变量初始化为0,并在团队名称匹配时递增

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

  • 以单独的方法读取文件的内容。让该方法返回存储到
    String[]
    String[]
  • 向用户询问团队名称
  • 检查数组
    winners
    是否包含团队名称。这种情况已经发生在方法
    checkSeries()
    中。正如您可以从我之前的评论中想象的那样,我将把扫描器代码移动到1中描述的方法。请记住,方法名称应该描述方法中发生的事情-因此
    checkSeries()
    应该只检查并返回yes或no
  • 在新的计数方法中重用
    checkSeries()
    的for循环。仅当
    checkSeries()
    返回true时,才需要调用此方法

  • 您可以使用HashMap,单词为“key”,出现次数为“value”。每当你阅读一个单词时,检查该单词在地图中是否可用,并增加其值。如果您需要代码示例,请告知。

    如果我是您,我会将
    字符串中输入的所有文本读取一次,然后使用方法
    string.split(“”)

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


    如果您想在编写代码时获得更多帮助,请随时询问

    ,只需创建一个计数器变量并在for循环的If块中递增它即可。简单。