2017-10-17 14 views
1

のテキスト入力中に私が最も困難な時間JTextFieldのための入力でありますどのように多くの単語コーディングする方法を見つけ出すを抱えているどのように多く、私はセットクリアな入力ボタンを持って検索し、そこにどれくらいの言葉があるかを知る方法を見つけ出すと、それもクリアすることができます。ありがとう、ここに私のコードです!一度言葉はJTextFieldの

String test = "um dois  tres quatro  cinco "; 
String [] splitted = test.trim().split("\\p{javaSpaceChar}{1,}"); 
System.out.println(splitted.length); 

//出力:あなたは、文字列と文字列配列を単語に分解し、その配列の長さを読んで生成するsplitを使用できるのinputTextでそのようなテキストの小片のために

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

public class CopyTextPanel extends JPanel 
{ 
private JTextField input; 
private JLabel output, inlabel, outlabel; 
private JButton compute, clear; 
private JPanel panel; 

public CopyTextPanel() 
{ 
    inlabel = new JLabel("Input Text: "); 
    outlabel = new JLabel("Text Statistics Results: "); 
    input = new JTextField (" ", 25); 
    output = new JLabel(); 
    compute = new JButton("Compute Statistics"); 
    compute.addActionListener (new ButtonListener()); 
    clear = new JButton("Clear Text"); 
    clear.addActionListener (new ButtonListener()); 
    panel = new JPanel(); 

    output.setPreferredSize (new Dimension(550, 30)); 
    panel.setPreferredSize (new Dimension(620, 100)); 
    panel.setBackground(Color.gray); 
    panel.add(inlabel); 
    panel.add(input); 
    //panel.add(outlabel); 
    //panel.add(output); 
    panel.add(compute); 
    panel.add(clear); 
    panel.add(outlabel); 
    panel.add(output); 

    setPreferredSize (new Dimension(700, 150)); 
    setBackground(Color.cyan); 
    add(panel); 
} 

private class ButtonListener implements ActionListener 
{ 
    public void actionPerformed (ActionEvent event) 
    { 
     if (event.getSource()==compute) 
     { 
      { 
       output.setText (input.getText());      
      } 
     } 
     else 
      input.setText(""); 
    } 
} 
+1

、 "文字列内の単語数を数える方法"は、そのコードの残りの部分がその問題を解決することとほとんど関係がないので、まずその対象に関するいくつかの研究を行うことをお勧めします。 – MadProgrammer

+0

正規表現を調べる必要があります。彼らはあなたがしようとしていることをするのに非常に便利です。 – luckydog32

答えて

4

だから、あなたの入力のために:あなたの基本的な問題は、より良いように要約することができます

String inputText = input.getText(); 
String [] splitted = inputText.trim().split("\\p{javaSpaceChar}{1,}"); 
int numberOfWords = splitted.length; 
+0

すごい!ありがとうございました!私はそれが働くようになった、今私はちょうど私がそれを正しく理解しているのだろうかと思っています。私はinputtext変数がintput.getText()を設定することを理解しています。文字列に変換する。 Stringp [] splitted = inputText.split( "\\ s");を入力するだけでエラーが発生する理由を理解できません。スペースのため、なぜ私は他のメソッド呼び出しもすべて追加する必要があります。ありがとうagainA – GonePhisin

+0

私はあなたに感謝しました! Stringp []をタイプするのではなく、String配列がうまく理解できるように助けてください。splitted = inputText.split( "\\ s"); – GonePhisin

+0

ようこそ。まあ、2つのアプローチは何らかの点で似ています。このソリューションは、すべての空白の状況をカバーするため、より堅牢なものです。より正確な回答については、この回答を参照してください:https://stackoverflow.com/a/4731164/3055724 – Doleron