溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java實(shí)現(xiàn)英文翻譯程序的方法

發(fā)布時(shí)間:2021-04-15 11:17:56 來(lái)源:億速云 閱讀:522 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下java實(shí)現(xiàn)英文翻譯程序的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

具體內(nèi)容如下

1.功能簡(jiǎn)介

將文本文件中的英文轉(zhuǎn)換為對(duì)應(yīng)的中文

詞庫(kù)如下:

java實(shí)現(xiàn)英文翻譯程序的方法

源文件:

java實(shí)現(xiàn)英文翻譯程序的方法

翻譯后的文件:

java實(shí)現(xiàn)英文翻譯程序的方法

輸入源文件路徑,將翻譯后的內(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)

java實(shí)現(xiàn)英文翻譯程序的方法

(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)樽址?,分離出其中的單詞,然后翻譯為對(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)如下:

java實(shí)現(xiàn)英文翻譯程序的方法

以上是“java實(shí)現(xiàn)英文翻譯程序的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI