orderedlinkedlist JAVA计算.txt文件中的单词没有重复单词加计数器>

时间:2014-11-02 03:50:40

标签: java list foreach count word

好的,这个程序应该计算每个单词出现在.txt文件中我在正确的轨道上的次数,因为这个程序在文本区域中显示文件中的每个单词但我需要它不重复单词而是增加计数器。我是否在每个词的正确轨道上:单词陈述?它位于有序链表中,因此单词按字母顺序排列......

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.Scanner;


public class Oct29 extends JPanel
{
  private OrderedList<String> words;
  private String filename;
  private int width = 800;
  private int height = 600;
  private TextArea textarea;

  public Oct29()
  {
    Scanner scan;
    textarea = new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
    textarea.setFont(new Font("Helvetica",Font.PLAIN,24));
    textarea.setPreferredSize(new Dimension(width,height));
    setPreferredSize(new Dimension(width,height));
    add(textarea);
    JFileChooser chooser = new JFileChooser("../Text");
    int returnvalue = chooser.showOpenDialog(null);

    if(returnvalue == JFileChooser.APPROVE_OPTION)
    {
      try
      {
        File file = chooser.getSelectedFile();
        filename = file.getName();
        System.err.println(filename);
        scan = new Scanner(file);
      }
      catch (IOException e)
      {
        System.err.println("IO EXCEPTION");
        return;
      }       
    }
    else
    {
      return;
    }
    words = new OrderedLinkedList<String>();
    while(scan.hasNext())
    {
      String token = scan.next().toLowerCase();
      token = token.replace(",","").replace(".","");
      words.add(token);
    }
    scan.close();
    textarea.append("    "+filename+" has wordcount: "+words.size()+
      "\n-------------------------\n\n");

     for(String word : words)
     {     
        textarea.append(word+"\n");  // instead of displaying each word I need it to read when the word changes and then list a count of that word...
     }
  }

  public static void main(String[] arg)
  {
    JFrame frame = new JFrame("Oct 29");
    frame.getContentPane().add(new Oct29());
    frame.pack();
    frame.setVisible(true);
  }
}

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题

1)当你正在阅读它们时,为每个单词保留一个计数器然后当你输出它时你可以输出计数器

2)当您输出保持计数器时,当单词发生变化时,您输出计数器和单词,然后将计数器设置回零。

您可以使用String.equals从for循环开始。 如果这是真的,那就增加。如果它是假的,那么做你需要的任何事情(在某处分配值或只输出它)然后将计数器设置为0.