2012-04-09 16 views
2

Hallo an alle meine erste Frage auf Stack-ÜberlaufZählen der Anzahl der Wörter in einem Textbereich

import javax.swing.*; 
import java.util.*; 
import java.awt.event.*; 

public class TI extends JFrame implements ActionListener 
{ 
static int count=0; 
String ct; 
JTextField word; 
JTextArea tohide; 
public static void main(String arg[]) 
{ 
    TI ti=new TI(); 
} 

public TI() 
{ 

    JPanel j=new JPanel(); 
    JLabel def=new JLabel("Enter the text to be encrypted"); 
    word=new JTextField("",20); 
    tohide=new JTextArea("",5,20); 
    JButton jb=new JButton("COUNT"); 
    tohide.setBorder(BorderFactory.createLoweredBevelBorder()); 
    j.add(def); 
    j.add(tohide); 
    j.add(word); 
    j.add(jb); 
    add(j); 
    setSize(500,500); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocationRelativeTo(null); 
    jb.addActionListener(this); 

} 

public void actionPerformed(ActionEvent ae) 
{ 

    String txt=tohide.getText(); 
    StringTokenizer stk=new StringTokenizer(txt," "); 
    while(stk.hasMoreTokens()) 
    { 
     String token=stk.nextToken(); 
     count++; 
    } 
    ct=Integer.toString(count);; 
    word.setText(ct); 

    } 

    } 

ich die Anzahl der Wörter zählen möchten, die ist eine logische error.As im textarea.There eingegeben werden Ich klicke weiter auf den Zählknopf, die Wortzahl erhöht sich.

+0

1) Bitte einen konsistenten und logischen Gedankenstrich für Codeblocks verwenden. 2) +1 für den Buchungscode, der das tatsächliche Verhalten beschreibt (ich denke, wir können das erwartete Verhalten erraten) und herausfinden, wie man die Codeformatierung benutzt. 3) Willkommen bei SO! :) –

Antwort

7

Sie setzen die count nie auf 0 zurück, bevor Sie die Anzahl der Wörter neu berechnen. Es scheint keinen Bedarf für count als Klassenvariable zu geben. Diese Änderung würde diese Art von Fehler unmöglich machen.

3

Verwenden javax.swing.text.Utilities, die durch Leerzeichen ist nicht genug Trennung

public static final int getWordStart(JTextComponent c, int offs) 
public static final int getWordEnd(JTextComponent c, int offs) 

hat. Der Separator könnte auch Registerkarte \ n usw. verkohlt

1
public void actionPerformed(ActionEvent ae) { 
    word.setText(String.valueOf(tohide.getText().split("\\s").length)); 
} 
0

ich den folgenden Code bin mit der Aufgabe zu tun. Die Idee dahinter ist, dass jedes Wortpaar durch ein Leerzeichen getrennt ist. Daher scheint der Platz zum Teilen einfach zu sein. Wenn Wörter Wagenrücklauf enthalten, muss vor dem Zählen der Wagenrücklauf durch einen leeren Faden ersetzt werden. Ich hoffe, dass es hilft

public int WordCount(String Words){ 
    //Initiate Result 
    String s = Words+" "; //Add space after the received string 
    String result =""; 
    int i = 0; 
    int count = s.length(); 

    try { 

     for (i = 0; i <= count - 1; i++) { 
       if (count - i > 1) { 

       String tempString = s.substring(0, s.indexOf(" ")); 



       if (s.contains(" ") && (!s.isEmpty())) { 
        s = s.substring(s.indexOf(" ") + 1, s.length()); 
        //get substring between " " and lenght ; 
       } else { 
        if(!s.isEmpty()) { 
         //output nothing 
        } 
       } 
      } else { 
       //output nothing; 
      } 

     } 


    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } 




    return i; 

} 
Verwandte Themen