3

スタック オーバーフローに関する最初の質問

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

   }

    }

テキストエリアに入力されている単語の数を数えたい.論理エラーがあります.カウントボタンをクリックし続けると、単語数が増えます.

4

4 に答える 4

7

count単語数を再計算する前に を 0 にリセットすることはありません。countクラス変数である必要はないようです。その変更を行うことで、この種の間違いは不可能になります。

于 2012-04-09T11:28:27.553 に答える
3

javax.swing.text.Utilities持っているものを使用

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

スペースで区切るだけでは不十分です。セパレーターは、タブ、\n などの文字でもかまいません。

于 2012-04-09T12:05:30.983 に答える
1
public void actionPerformed(ActionEvent ae) {
    word.setText(String.valueOf(tohide.getText().split("\\s").length));
}
于 2012-04-09T13:11:46.667 に答える