结合字典程序的【内存版】和【百度版】
1.定义接口
public interface IDict {
public String translate(String word);
}
2.实现接口
内存版:
public class LocalDict implements IDict {
@Override
public String translate(String word) {
//1.读取文件
InputStream is = IDict.class.getResourceAsStream("../words.txt"); //获取文件路径
Scanner isSc = new Scanner(is); //转化为文件流
Map dictMap = new HashMap(); //创建字典用于存储文件中的数据
//2.将文件内容存入Map中
while (isSc.hasNext()) { //死循环
String[] strings=isSc.nextLine().split("\t"); //按行读取文本内容,用\t分隔字符串
if (strings.length>1) {
dictMap.put(strings[0],strings[1]); //将字符串数组中的数据存入字典中
}else {
dictMap.put(strings[0],null);
}
}
//3.输入要查找的单词,返回结果
String result;
if(dictMap.containsKey(word)){ //判断字典中是否存在键
result = word+"\t"+dictMap.get(word); //通过键获取值
}else{
result = "";
}
return result;
}
}
百度版(使用方法详见字典程序(百度版)):
public class BaiduDict implements IDict {
// 在平台申请的APP_ID 详见 http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer
private static final String APP_ID = "";
private static final String SECURITY_KEY = "";
@Override
public String translate(String word) {
TransApi api = new TransApi(APP_ID, SECURITY_KEY);
String data = api.getTransResult(word,"auto","zh");
System.out.println(data);
JSONObject object = JSONObject.parseObject(data);
JSONArray array = object.getJSONArray("trans_result");
JSONObject elem = JSONObject.parseObject(array.get(0).toString());
String dst = elem.getString("dst");
try{
return URLDecoder.decode(dst,"utf-8");
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}
return "";
}
}
3.定义一个类实现下翻译的功能
public class DictFunc {
public void welcome(){
System.out.println("###################################");
System.out.println("###################################");
System.out.println("#########欢迎进入英文字典程序#########");
System.out.println("###################################");
System.out.println("###################################");
}
public String input(){
Scanner sc=new Scanner(System.in); //定义用户输入
System.out.print("请输入你要翻译的英文单词(回车退出):");
return sc.nextLine(); //nextLine()吸取字符前后的空格/Tab键,回车键截止
}
public void run(){
welcome();
IDict localDict = new LocalDict();
IDict baiduDict = new BaiduDict();
while(true){
String word = input();
if (word.isEmpty()){
break;
}
String result = localDict.translate(word);
if (result.isEmpty()){
result = baiduDict.translate(word);
}
if (result == null || result.isEmpty()){
System.out.printf("找不到单词%s.\n",word,result);
}
else{
System.out.printf("%s\t%s\n",word,result);
}
}
}
}
4.Main类
public class Main {
public static void main(String[] args) {
DictFunc dictFunc = new DictFunc();
dictFunc.run();
}
}