题目:设计一个词典类Dic,每个单词包括英文单词及对应的中文含义,并有一个英汉翻译成员函数,通过查词典的方式将一段英语翻译成对应的汉语。
思路:字典项类DicItem包括EngLish(英语单词)、Chinese(对应中文含义)数据成员,字典类包括一个字典项类的列表,包含Add()(添加单词)和trans(英汉翻译)成员函数。
import java.util.Scanner;
class Dic {
fanyi[] arrays = new fanyi[5];//数组初始化
int size = 0;
void Add(String english, String chinese) {//增加单词
int p = chack(english);
if (p != -1) {
arrays[p].chinese = chinese;
} else {
resize();
this.arrays[size] = new fanyi(english, chinese);
size++;
}
System.out.println("成功加入单词:" + english + " " + chinese);
}
void trans(String english) { //翻译
int f = 0;
for(int i = 0;i<size;i++){
if (arrays[i].english.equals(english)) {
f = 1;
System.out.println(english + " 意思是:" + arrays[i].chinese);
}
}
if (f == 0) {
System.out.println("字典中没有此单词!!!");
}
}
int chack(String english) {//检查单词是否重复
int i;
for (i = 0; i < this.size; i++) {
if (arrays[i].english.equals(english)) {
return i;
}
}
return -1;
}
void resize() {//扩容
if (arrays.length == size) {
fanyi[] newarrays = new fanyi[arrays.length * 3 / 2 + 1];
System.arraycopy(arrays, 0, newarrays, 0, size);
arrays = newarrays;
}
}
void show() {//打印数组所有成员
for (int i = 0; i < this.size; i++)
System.out.println(arrays[i].english + " " + arrays[i].chinese);
}
private class fanyi {//内部类
String english;
String chinese;
public fanyi(String english, String chinese) {
this.english = english;
this.chinese = chinese;
}
}
}
public class Test {
public static void main(String[] args) {
Dic dic = new Dic();
System.out.print("请输入录总数:");
Scanner scan0 = new Scanner(System.in);
int n = scan0.nextInt();
for (int i = 0; i < n; i++) {
System.out.print("请输入信息(英文 汉译):");
Scanner scan = new Scanner(System.in);
String a = scan.next();
String b = scan.next();
dic.Add(a, b);
}
System.out.print("请输入要查询的单词:");
Scanner scan1 = new Scanner(System.in);
String c = scan1.next();
dic.trans(c);
System.out.println("该词典中所有单词为:");
dic.show();
}
}