2014-03-01 119 views
-1

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

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

    } 
} 
+0

只需创建一个计数器变量并增加它在你的for循环的,如果块。简单。 –

回答

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的方法可以使用新方法。如果返回值为0,则返回false,否则返回true。

+0

明白了谢谢你...! – user3339936

1

基本上你可以重用现有的for

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

引入一个变量counter如果球队名称相匹配的是被初始化为0和递增。

另外我建议重新构造你的代码。

  1. 以单独的方法读取文件的内容。让该方法返回存储到String[] winnersString[]
  2. 向用户询问团队名称。
  3. 检查数组winners是否包含团队名称。这发生在您的方法checkSeries()中。正如您可以从我以前的评论中想象的那样,我会将Scanner代码移动到1中描述的方法。请记住,方法名称应该描述方法中发生的情况 - 因此checkSeries()应该只检查并返回yes或no。
  4. checkSeries()的for循环重新用于计数的新方法。如果checkSeries()返回true,则只需要调用此方法。
0

您可以使用带有“key”作为单词的HashMap和“value”作为出现次数。无论何时阅读单词时,都要检查单词是否在地图中可用并增加其值。让我们知道你是否需要一个代码示例。

0

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

这将返回包含所有的话string阵列与白色空间之间的在拆呢你的意见。然后在Array上执行一个循环,并在输入中计算团队的结果。

如果你想在写代码的进一步帮助,随便问

相关问题