java實(shí)現(xiàn)英文翻譯程序
本文實(shí)例為大家分享了java實(shí)現(xiàn)英文翻譯程序的具體代碼,供大家參考,具體內(nèi)容如下
1.功能簡(jiǎn)介
將文本文件中的英文轉(zhuǎn)換為對(duì)應(yīng)的中文
詞庫(kù)如下:
源文件:
翻譯后的文件:
輸入源文件路徑,將翻譯后的內(nèi)容輸出到result.txt文件中。
2.重要技術(shù)
(1)如何載入詞庫(kù)文件
因?yàn)樵~庫(kù)文件是 kry=value的形式,所有可以用到Properties類的load函數(shù)
(2)如何將源文件中的一段英文分理處一個(gè)個(gè)的單詞
可以用StringTokenizer類
(3)如何進(jìn)行翻譯
直接用中文替換相應(yīng)的英文
3.項(xiàng)目結(jié)構(gòu)
(4)代碼編寫
①FileLoader類
/*文件載入類,將源文件中的內(nèi)容輸出到字節(jié)數(shù)組中*/ package zhidao3_2; import java.io.FileInputStream; import java.io.File; public class FileLoad { public static byte[] getContent(String fileName)throws Exception{ File file = new File(fileName); if(!file.exists()){ System.out.println("輸入有誤,該文件不存在"); } FileInputStream fis = new FileInputStream(file); int length = (int)file.length(); byte[] data = new byte[length]; fis.read(data); fis.close(); return data; } }
②TxtTrans類
/*文件翻譯,將字節(jié)數(shù)組變?yōu)樽址蛛x出其中的單詞,然后翻譯為對(duì)應(yīng)的漢字,去掉空格,變?yōu)樽址?/ package zhidao3_2; import java.util.StringTokenizer; import java.util.Properties; import java.io.*; public class TxtTrans { private Properties pps; public TxtTrans(){ loadCiku(); } public void loadCiku(){ pps = new Properties(); try{ FileReader fis = new FileReader("g:/ciku.txt");//以字符載入時(shí)沒(méi)有亂碼,以字節(jié)載入時(shí)出現(xiàn)了亂碼 pps.load(fis); fis.close(); }catch(Exception ex){ ex.printStackTrace(System.out); System.out.println("載入詞庫(kù)時(shí)出錯(cuò)"); } //System.out.println(pps.get("china")) ; } public String trans(byte[] data){ String srcTxt = new String(data); String dstTxt = srcTxt; String delim = " ,.!\n\t"; //分隔符可以指定 StringTokenizer st = new StringTokenizer(srcTxt,delim,false); String sub,lowerSub,newSub; //int i=0; while(st.hasMoreTokens()){ sub = st.nextToken(); //分割出的一個(gè)個(gè)單詞 lowerSub = sub.toLowerCase();//統(tǒng)一轉(zhuǎn)換為小寫,這樣可以簡(jiǎn)化詞庫(kù) //System.out.println(sub); newSub = pps.getProperty(lowerSub); if(newSub != null){ //如果找到了匹配的漢字,則進(jìn)行替換 dstTxt = dstTxt.replaceFirst(sub, newSub); //只替換第一個(gè),即只替換了當(dāng)前的字符串,否則容易造成ch我na的例子 //System.out.println(dstTxt); } } return dstTxt.replaceAll(" ", ""); //去掉空格 } }
③FileOutput類
/*將字符串輸出到文件*/ package zhidao3_2; import java.io.File; import java.io.FileOutputStream; public class FileOutput { public static void output(String text,String fileName)throws Exception{ File file = new File(fileName); FileOutputStream fos = new FileOutputStream(file); fos.write(text.getBytes()); fos.close(); } }
④主函數(shù)
package zhidao3_2; import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { String srcFile = JOptionPane.showInputDialog("輸入源文件"); try{ byte[] data = FileLoad.getContent(srcFile); TxtTrans tt = new TxtTrans(); String dString = tt.trans(data); FileOutput.output(dString, "g:/result.txt"); }catch(Exception ex){ JOptionPane.showMessageDialog(null, "操作異常"); System.exit(1); } JOptionPane.showMessageDialog(null, "翻譯完畢"); } }
最后的項(xiàng)目結(jié)構(gòu)如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Java中String和Date、Timestamp之間的轉(zhuǎn)換
這篇文章主要介紹了在Java中String和Date、Timestamp之間的轉(zhuǎn)換 的相關(guān)資料,需要的朋友可以參考下2015-12-12Java基礎(chǔ)之隱式轉(zhuǎn)換vs強(qiáng)制轉(zhuǎn)換
這篇文章主要介紹了Java基礎(chǔ)之隱式轉(zhuǎn)換vs強(qiáng)制轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2015-12-12springboot項(xiàng)目啟動(dòng)類錯(cuò)誤(找不到或無(wú)法加載主類 com.**Application)
本文主要介紹了spring-boot項(xiàng)目啟動(dòng)類錯(cuò)誤(找不到或無(wú)法加載主類 com.**Application),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05Spring中的Aware接口及應(yīng)用場(chǎng)景詳解
這篇文章主要介紹了Spring中的Aware接口及應(yīng)用場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01spring boot參數(shù)驗(yàn)證注解@NotNull、@NotBlank和@NotEmpty區(qū)別解析
使用spring boot參數(shù)驗(yàn)證是常常會(huì)使用@NotNull、@NotBlank和@NotEmpty三個(gè)判斷是否不為空的注解,中文都有不能為空的意思,大部分使用者都傻傻分清它們之間到底有什么區(qū)別,今天就讓咱們來(lái)一起探索它們之間的不同吧,感興趣的朋友一起看看吧2024-05-05