「Java学习打卡」28、3.23面向对象程序练习

题目:设计一个词典类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();
    }
}
发布了30 篇原创文章 · 获赞 0 · 访问量 444

猜你喜欢

转载自blog.csdn.net/qq_26959737/article/details/105057783