2014-11-02 47 views
0

好的这个程序应该计算每个单词出现在.txt文件中的次数我在正确的轨道上,因为这个程序显示每个单词在文本区域的文件中,但我需要它不重复单词并增加计数器。我是在正确的轨道下为每个单词:单词声明?这是在一个有序链表这样的话都是为了字母...orderedlinkedlist JAVA计算单词中的.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

有两种方法,你可以去这个

1)当你在阅读他们保留一个计数器每个字然后当你输出这个时,你可以输出计数器

2)当你输出保持一个计数器,当单词改变,然后你输出计数器和单词,然后将计数器设置为零。

您可以使用您的String.equals for循环开始的。 然后如果这是真的,增量。如果它的假然后做任何你需要的东西(分配值的地方或只是输出它),然后将计数器设置为0.

+0

我目前正在尝试选项2试图找出如何计算单词和它何时更改重置计数器... – 2014-11-02 04:11:39

+0

所以你需要1)一个if语句,2)一个计数器变量,3)String.equals()--->在你的变量word.equals(“你正在测试它的字符串” ) – natus 2014-11-02 04:25:01

+0

String current = null; 为(字符串字:字) { 诠释计数= 0; if(current!= null &&!(current.equals(word))) count ++; textarea.append(word +“”+ count +“\ n”); } – 2014-11-02 04:26:31