java实现:文本统计器 要求: 1、设计一个窗口,该窗口中有五个文本区。 2、五个文本区中一个可供用户编辑文本,另外四个不可编辑。 3、当用户在可编辑的文本区中进行文本编辑操作时,另外四个不可编辑的文本区中,一个实时显示用户所编辑文本中所出现的单词,一个显示用户所编辑文本中所出现的单词总数,一个实时显示用户所编辑文本中出现的数字,一个显示用户所编辑文本中出现的数字的总数。
时间: 2024-02-27 14:51:30 浏览: 111
这是一个 GUI 程序,可以使用 Java 的 Swing 框架来实现。具体实现步骤如下:
1. 创建窗口并添加组件
使用 JFrame 类创建窗口,并使用 JTextField 类创建五个文本区,其中一个可编辑,其余四个不可编辑。将这五个文本区添加到窗口中,如下所示:
```java
JFrame frame = new JFrame("文本统计器");
frame.setSize(600, 400);
JTextField editText = new JTextField();
editText.getDocument().addDocumentListener(new DocumentListener() {
// 文本编辑事件监听器
@Override
public void insertUpdate(DocumentEvent e) {
updateTextStatistics();
}
@Override
public void removeUpdate(DocumentEvent e) {
updateTextStatistics();
}
@Override
public void changedUpdate(DocumentEvent e) {
updateTextStatistics();
}
});
JTextField wordText = new JTextField();
wordText.setEditable(false);
JTextField wordCountText = new JTextField();
wordCountText.setEditable(false);
JTextField numberText = new JTextField();
numberText.setEditable(false);
JTextField numberCountText = new JTextField();
numberCountText.setEditable(false);
frame.setLayout(new GridLayout(5, 1));
frame.add(editText);
frame.add(wordText);
frame.add(wordCountText);
frame.add(numberText);
frame.add(numberCountText);
```
其中,`editText` 添加了一个文本编辑事件监听器,当用户在这个文本区中进行文本编辑操作时,调用 `updateTextStatistics()` 方法更新其他四个文本区的内容。
2. 编写文本统计方法
编写一个 `updateTextStatistics()` 方法,用于实时统计用户在可编辑文本区中输入的单词和数字,并更新其他四个文本区的内容,如下所示:
```java
private void updateTextStatistics() {
String text = editText.getText().replaceAll("[^a-zA-Z0-9 ]", " ");
String[] words = text.split("\\s+");
int wordCount = words.length;
int numberCount = 0;
for (String word : words) {
try {
Integer.parseInt(word);
numberCount++;
} catch (NumberFormatException e) {
}
}
wordText.setText(getWords(words));
wordCountText.setText("单词数:" + wordCount);
numberText.setText(getNumbers(words));
numberCountText.setText("数字数:" + numberCount);
}
// 获取文本中出现的单词
private String getWords(String[] words) {
Set<String> wordSet = new HashSet<>();
for (String word : words) {
wordSet.add(word);
}
return "单词:" + String.join(", ", wordSet);
}
// 获取文本中出现的数字
private String getNumbers(String[] words) {
Set<String> numberSet = new HashSet<>();
for (String word : words) {
try {
int number = Integer.parseInt(word);
numberSet.add(String.valueOf(number));
} catch (NumberFormatException e) {
}
}
return "数字:" + String.join(", ", numberSet);
}
```
其中,`updateTextStatistics()` 方法首先将用户输入文本中的非字母和数字字符替换为空格,然后使用空格分割文本,得到单词数组。接着,遍历单词数组,统计单词数和数字数,并调用 `getWords()` 和 `getNumbers()` 方法获取出现的单词和数字。最后,将统计结果更新到其他四个文本区中。
3. 显示窗口
使用 JFrame 类的 `setVisible()` 方法将窗口显示出来,如下所示:
```java
frame.setVisible(true);
```
以上就是 Java 实现文本统计器的步骤。完整代码如下:
阅读全文