(1)读取词典文件dict.txt, 文件内容及格式如下: sun 太阳 do 做 make 做 make 生产 moon 月亮 注意,英文和中文单词之间以空格分隔。一个英文单词可能有多个中文释义,一条释义占一行 一个中文也可能对应多个英文单词,一个对照关系占一行 (2)从控制台输入一个英文单词,显示它的中文释义,或输入一个中文词,显示它的英文单词。退出系统输入"###"。 文件在项目根目录下,读取不用带盘符和目录信息,直接指定文件名,如下方样句读取即可: new FileReader("dic.t
时间: 2024-02-06 12:11:14 浏览: 109
好的,这是一个文件读取和简单的键值对查询的任务,我可以为您提供一个 Java 实现的代码示例:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Dictionary {
private static final String DICT_FILE = "dict.txt"; // 词典文件名
private static final String EXIT_CMD = "###"; // 退出指令
private Map<String, String> engToChi; // 英文到中文的映射
private Map<String, String> chiToEng; // 中文到英文的映射
public Dictionary() {
engToChi = new HashMap<>();
chiToEng = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(DICT_FILE))) {
String line;
while ((line = reader.readLine()) != null) {
String[] tokens = line.trim().split("\\s+");
if (tokens.length == 2) {
String eng = tokens[0];
String chi = tokens[1];
engToChi.put(eng, chi);
chiToEng.put(chi, eng);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void lookup() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入要查询的单词或短语:");
String input = scanner.nextLine().trim();
if (input.equals(EXIT_CMD)) {
break;
}
String result = engToChi.get(input);
if (result == null) {
result = chiToEng.get(input);
}
if (result == null) {
System.out.println("未找到该词条,请重新输入或输入\"" + EXIT_CMD + "\"退出。");
} else {
System.out.println(result);
}
}
scanner.close();
}
public static void main(String[] args) {
Dictionary dict = new Dictionary();
dict.lookup();
}
}
```
这个代码使用了两个 `HashMap`,一个从英文到中文,一个从中文到英文,分别用于双向查询。在构造函数中,它会读取指定的词典文件,将单词和翻译逐行读入,并存入这两个哈希表中。在 `lookup` 方法中,它会循环读入用户的查询请求,如果用户输入了退出指令,就跳出循环,否则就在两个哈希表中查找对应的条目并输出结果。如果没有找到,就提示用户重新输入。最后,它会关闭输入流并退出程序。