package 作业5; import java.awt.; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.; import java.io.File; import java.util.HashMap; import java.util.Scanner; import java.io.File; import java.util.HashMap; import java.util.Scanner; public class Example13_7{ public static void main( String args []){ WindowWord win = new WindowWord(); win.setTitle("英﹣汉小字典"); } } class WindowWord extends JFrame{ JTextField inputText,showText; WordPolice police; public WindowWord(){ setLayout(new FlowLayout()); inputText = new JTextField(6); showText = new JTextField(6); showText.setColumns(15); add(inputText); add(showText); police = new WordPolice(); police.setView(this); inputText.addActionListener(police); setBounds(100,100,400,280); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class WordPolice implements ActionListener { WindowWord view; HashMap<String,String>hashtable; File file = new File ("E:\JAVA\上机\作业5\cet4.txt"); Scanner sc = null ; WordPolice () { hashtable = new HashMap< String,String >(); //System.out.println(hashtable.size()); try { sc = new Scanner ( file ); //System.out.println(sc); while (sc.hasNext ()) { String englishWord = sc . next (); String chineseWord = sc . next (); hashtable . put ( englishWord , chineseWord ); } HashMap<String,String> reversedHashtable = new HashMap<String,String>(); for (String key : hashtable.keySet()) { String value = hashtable.get(key); reversedHashtable.put(value, key); } hashtable.putAll(reversedHashtable); } catch(Exception e ) {} } public void setView(WindowWord view) { this.view = view; } public void actionPerformed(ActionEvent e) { String inputWord = view.inputText.getText (); if(hashtable.containsKey(inputWord)) { String outputWord = hashtable.get ( inputWord ); view.showText.setText (outputWord ); } else { String chineseWord = inputWord; for (String key : hashtable.keySet()) { String value = hashtable.get(key); if (value.equals(chineseWord)) { view.showText.setText(key); return; } } for (String value : hashtable.values()) { if (value.equals(inputWord)) { String outputWord = hashtable.get(value); view.showText.setText(outputWord); return; } } view.showText.setText ("没有此单词"); } } }我在输入框输入“书”,但结果是没有此单词,但是输入“book”,结果是“n.书,书籍”,如何解决
时间: 2023-07-16 20:16:05 浏览: 205
你的程序中只是将英文单词和对应的中文翻译存储在了HashMap中,没有对输入的中文单词进行处理。所以当你输入“书”时,程序无法匹配到对应的英文单词,因此输出“没有此单词”。
要解决这个问题,你可以在程序中增加一个判断:当输入的单词不是英文单词时,先将其作为中文单词进行匹配。具体来说,可以在actionPerformed方法中增加以下代码:
```java
if(!inputWord.matches("[a-zA-Z]+")) { // 如果输入的单词不是英文单词
for (String value : hashtable.values()) { // 遍历HashMap中的所有中文翻译
if (value.equals(inputWord)) { // 如果找到了匹配的中文翻译
String outputWord = hashtable.get(value); // 获取对应的英文单词
view.showText.setText(outputWord); // 显示翻译结果
return;
}
}
}
```
这段代码的作用是判断输入的单词是否是英文单词(即是否只包含字母),如果不是,则遍历HashMap中的所有中文翻译,找到与输入单词相匹配的中文翻译,并获取对应的英文单词,最后显示翻译结果。
加入这段代码后,你再输入“书”,就能够正确地显示出“n.书,书籍”这个翻译结果了。
相关问题
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random;
看起来你在使用 Java 语言编写 GUI 程序,导入了一些必要的包和类。其中,javax.swing 包提供了 GUI 组件,java.awt 包提供了 GUI 组件的基础类和布局管理器。此外,你还导入了 java.awt.event 包,用于处理 GUI 组件的事件。其中,ActionListener 和 KeyListener 是两个常用的事件监听器,分别用于处理按钮点击事件和键盘输入事件。最后,你还导入了 java.util.Random 类,用于生成随机数。
为以下代码注释: import java.awt.Color; //��ĵ��� import java.awt.Container; import java.awt.Label; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JTextField;
以下是对每行代码的注释:
```java
import java.awt.Color; //导入java.awt.Color类,用于设置颜色
import java.awt.Container; //导入java.awt.Container类,用于管理组件
import java.awt.Label; //导正点原子高速无线调试器的接线方式如下:
1. 首先,将无线调试器入java.awt.Label类,用于显示文本标签
import java.awt.TextArea; //导入java.awt.TextArea类,的天线连接到调试目标电路板上的天线接口。确保天线接口与无线调用于显示多行文本
import java.awt.event.ActionEvent; //导入java.awt.event.ActionEvent类,用于处理动作事件试器天线的接口类型匹配。
2. 将无线调试器的串口引脚(TX、RX、
import java.awt.event.ActionListener; //导入java.awt.event.ActionListener接口,用于监听动作事件
import java.awt.event.WindowGND)连接到调试目标电路板上的对应串口引脚。一般情况下,TX(Adapter; //导入java.awt.event.WindowAdapter类,用于处理窗口事件
import java.awt.event.WindowEvent; //导入发送)连接到目标电路板的RX(接收),RX(接收)连接到目标电路板的TXjava.awt.event.WindowEvent类,用于表示窗口事件
import java.io.BufferedWriter; //导入java.io.BufferedWriter类,用于写入数据到文件
import java.io.File; //导入java.io.File类,用于表示文件
import java.io.FileWriter; //导入java.io.FileWriter类,用于写入文件
import java.io.IOException; //导入java.io.IOException类,用于处理输入输出异常
import java.net.InetAddress; //导入java.net.InetAddress类,用于表示网络地址
import(发送),GND(地)连接到目标电路板的GND(地)。
3. 确保目标电 java.net.UnknownHostException; //导入java.net.UnknownHostException类,用于处理未知的主机异常
import java.util.concurrent.Executor路板的电源供应正常,并将无线调试器的电源引脚(VCC、GND)连接到目标电路板的电源引脚。确保电压和电流符合无线调试器的要求。
4. 如果有其他需要连接的引脚(如复位引脚、引导引脚等),按照无线调试器的说明文档进行连接。
请注意,在接线之前,务必详细阅读正点原子高速无线调试器的说明文档,了解具体的接线要求和步骤。如果有任何疑问Service; //导入java.util.concurrent.ExecutorService接口,用于执行多线程任务
import java.util.concurrent.Executors; //,请咨询正点原子的技术支持或参考相关的技术论坛。
阅读全文