在寫代碼的時(shí)候,當(dāng)鼠標(biāo)懸浮在某一個(gè)單詞上面的時(shí)候,有道詞典點(diǎn)有時(shí)會(huì)彈出一個(gè)消息氣泡,在里面中給出關(guān)于這個(gè)單詞相關(guān)的解釋,下面給大家展示一個(gè)使用Java基礎(chǔ)語(yǔ)言編寫的英漢字典案例: 實(shí)現(xiàn)功能: 輸入英文,給出對(duì)應(yīng)的中文翻譯,如果沒有這個(gè)單詞沒有被收錄會(huì)有相關(guān)提示 代碼編寫環(huán)境 JDK:1.8.0_191 Eclipse:2019-03 (4.11.0) 素材: dict.txt 字典資源文本文件,保存一些下列格式的文件,英文和翻譯之間用制表符隔開: Africa n. 非洲 Aids n. 愛滋病 America n. 美洲 April n. 四月 案例實(shí)現(xiàn)用到的技術(shù): IO流 Map—HashMap 字符串分割 異常處理 代碼思路 1、 根據(jù)字典文件路徑,創(chuàng)建file對(duì)象 2、 判斷file對(duì)象是否為空,不為空就繼續(xù),否則直接返回null 3、 File不為空,創(chuàng)建InputStreamReader和BufferedReader對(duì)象 4、 循環(huán)讀取字典文本中的內(nèi)容,切割得到數(shù)組,保存在map中 5、 提示輸入單詞,查詢單詞,輸出查詢結(jié)果 運(yùn)行效果 開始運(yùn)行的提示: ![]() 查詢成功的反饋 ![]() 單詞不存在的反饋 ![]() 案例代碼: 編寫方法讀取文本中的內(nèi)容 package com.feng.demo01; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 英漢字典案例 * @author dushine */ public class GetDict { public static void main(String[] args) { String path = "E:\\dict.txt"; // 獲取字典中的所有內(nèi)容 Map<String, String> dict = getText(path); // 判斷字典是否為空,提示輸入單詞,獲取查詢結(jié)果 if (dict != null) { @SuppressWarnings("resource") // 獲取輸入內(nèi)容 Scanner input = new Scanner(System.in); System.out.println("請(qǐng)輸入要查詢的單詞:"); String word = input.next(); // 查詢字典獲取中文,如果沒有也給出反饋 String ret = dict.get(word); if (ret != null) { System.out.println("查詢結(jié)果:\n"+word + ":" + ret); } else { System.out.println("您查詢的單詞尚未收錄,敬請(qǐng)期待!"); } } } /** * 獲取字典文件中內(nèi)容 * @param path * @return */ private static Map<String, String> getText(String path) { // 可能會(huì)出現(xiàn)異常 try { // 根據(jù)路徑創(chuàng)建文件對(duì)象 File file = new File(path); // 判斷路徑指向的文件是否存在 if (file.exists() && file.isFile()) { // 創(chuàng)建map,存儲(chǔ)讀取得到的內(nèi)容 Map<String, String> dict = new HashMap<String, String>(); System.out.println("文件路徑正確,正在解析。。。"); // 創(chuàng)建輸入流對(duì)象 InputStreamReader reader = new InputStreamReader(new FileInputStream(file), "gbk"); BufferedReader bufferedReader = new BufferedReader(reader); String text = null; // 循環(huán)讀取文件內(nèi)容 while ((text = bufferedReader.readLine()) != null) { // 切割每一行內(nèi)容,得到數(shù)組 String[] arr = text.split("\t"); // 把切割得到的內(nèi)容放入map dict.put(arr[0], arr[1]); } // 讀取結(jié)束,關(guān)閉流對(duì)象并返回結(jié)果 reader.close(); return dict; } else { System.out.println("字典崩潰啦,下次再來(lái)使用吧。。。"); } } catch (Exception e) { System.out.println("字典好像出了點(diǎn)問(wèn)題、文件內(nèi)容出錯(cuò)啦。。。"); e.printStackTrace(); } // 路徑指向的不是文件或者文件不存在返回null return null; } } |
|
來(lái)自: 好程序員IT > 《Java培訓(xùn)教程》