1. 程式人生 > >用java做一個簡單的英文翻譯程式

用java做一個簡單的英文翻譯程式

1.功能簡介

將文字檔案中的英文轉換為對應的中文

詞庫如下:

原始檔:


翻譯後的檔案:


輸入原始檔路徑,將翻譯後的內容輸出到result.txt檔案中。

2.重要技術

(1)如何載入詞庫檔案

   因為詞庫檔案是 kry=value的形式,所有可以用到Properties類的load函式

(2)如何將原始檔中的一段英文分理處一個個的單詞

可以用StringTokenizer類

(3)如何進行翻譯

直接用中文替換相應的英文

3.專案結構


(4)程式碼編寫

①FileLoader類

/*檔案載入類,將原始檔中的內容輸出到位元組陣列中*/
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類
/*檔案翻譯,將位元組陣列變為字串,分離出其中的單詞,然後翻譯為對應的漢字,去掉空格,變為字串*/
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");//以字元載入時沒有亂碼,以位元組載入時出現了亂碼
			pps.load(fis);
			fis.close();
		}catch(Exception ex){
			ex.printStackTrace(System.out);
			System.out.println("載入詞庫時出錯");
		}
		//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();	//分割出的一個個單詞

			lowerSub = sub.toLowerCase();//統一轉換為小寫,這樣可以簡化詞庫
			//System.out.println(sub);
			newSub = pps.getProperty(lowerSub);
			if(newSub != null){		//如果找到了匹配的漢字,則進行替換
				dstTxt = dstTxt.replaceFirst(sub, newSub);		//只替換第一個,即只替換了當前的字串,否則容易造成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();
	}
}

④主函式
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, "翻譯完畢");
	}

}

最後的專案結構如下:


相關推薦

java一個簡單英文翻譯程式

1.功能簡介 將文字檔案中的英文轉換為對應的中文 詞庫如下: 原始檔: 翻譯後的檔案: 輸入原始檔路徑,將翻譯後的內容輸出到result.txt檔案中。 2.重要技術 (1)如何載入詞庫檔案  

java一個簡單的打字遊戲

Java也是可以做桌面程式的。只不過需要執行在裝有JDK的電腦環境上,所以應用不是很廣泛,但是用來提高自身的程式碼邏輯還是可以的!偶有一天看到金山的打字通,就想起何不做個簡單的打字遊戲用來練練手。於是就有了下文 首先建一個類MyTyping,只有main方法   執行main方法

java一個簡單的萬年曆

一個簡單的萬年曆製作 簡單介紹萬年曆的各功能實現: 1.首先鍵盤輸入查詢的年份和月份 Scanner sc = new Scanner(System.in); System.ou

java一個簡單的視訊轉碼器

用java做一個視訊轉碼器 本Markdown編輯器使用[StackEdit][6]修改而來,用它寫部落格,將會帶來全新的體驗哦: 用java做一個視訊轉碼器,首先實現視訊格式轉換,需要用到兩個軟體”ffmpeg”和”mencoder”話不多說,直接上程式碼

Java一個及時翻譯工具

                     平時看英文文件或者查詢資料的時候,遇到了不懂的單詞,就要去百度,然後就會很麻煩。於是就想到用Java寫一個及時翻譯的小工具!預期的實現效果: 雙擊選中一個單詞,按下Ctrl+C進行復制 然後馬上顯示出對應單詞的中文翻譯首先基本思路是這樣的:    首先獲取系統剪下板的

JAVA一個簡單英文加密器

package qhs; import java.util.Scanner; public class JiaM { public static void main(String[] args) { String[] A = new String[5000]; String min;

C#一個簡單紙牌遊戲的程式

小子不才學C#沒多久,想做個窗體紙牌遊戲玩,但是窗體應用懂得不多,只能在控制命令臺上進行遊戲設計,希望有大神能幫我設計這個窗體程式,或者推薦好的窗體設計資料,謝謝了,控制命令臺程式如下: namespace BasicCardsGame {     class OutOfR

java實現一個簡單的單戶登陸功能的思路

get 單用戶 這樣的 簡單的 lock ref 數據庫 清除 一個 引用 所謂“單用戶單賬戶登錄”是指:在同一系統中,一個用戶名不能在兩個地方同時登錄。 我們參照 QQ 實現效果:當某賬號在 A 處登錄後,在未退出的情況下,如果再到 B 處登錄,那麽,系統會擠下 A 處

Vue 一個簡單的購物app

有意思 應用程序 其中 ins com 簡單的 node.js 引入 大神 前言 最近在學習Vue的使用。看了官方文檔之後,感覺挺有意思的。於是著手做了一個簡單的購物app。這是我第一次在這個網站上寫分享,如有不當之處,請多多指教。 一整個項目寫下來,最大的感覺就是組件式開

socket寫一個簡單的聊天程式

服務端程式碼: # 建立socket物件:socket.socket()——>繫結IP地址和埠:bind——>監聽:listen——># 得到請求:accept——>接收請求:recv——>傳送資訊:send——>關閉close   i

Java構建一個簡單的WebSocket聊天室

本文首發公眾號 Java貓說 & 貓叔的部落格 | MySelf,轉載請申明出處。 前言 首先對於一個簡單的聊天室,大家應該都有一定的概念了,這裡我們省略使用者模組的講解,而是單純的先說說聊天室的幾個功能:自我對話、好友交流、群聊、離線訊息等。 今天我們要做的demo就能幫我們做到這一

java實現一個簡單的ArrayList

重複造輪子雖然不可取,但是溫習一下資料結構,光看不做總是少了什麼,所以也來實現一下List,希望多多包涵。 既然要實現一個List,先來簡單說一下List的定義 線性表是最基本、最簡單、也是最常用的一種資料結構。 線性表中資料元素之間的關係是一對一的關係

Java構建一個簡單的WebSocket聊天專案之新增HTTP介面排程

本文首發公眾號與個人部落格:Java貓說 & 貓叔的部落格 | MySelf,轉載請申明出處。 前言 大家可以看看上一篇:用Java構建一個簡單的WebSocket聊天室 在上一篇文章中我們已經實現了:自我對話、好友交流、群聊、離線訊息等的功能。 而本篇,我們的框架升級了,

java實現一個簡單的學生管理系統

用Java如何實現一個用陣列作為儲存結構的簡易的學生管理系統? 首先,我們定義一個student類,在其中新增私有化的成員變數,通過getter和setter方法進行呼叫 public class Students { // 學號,姓名,性別,年

Jmeter一個簡單的介面測試(一)

Jmeter介面測試例項 1.新建一個Thread Group 2. 線上程組下建一個HTTP請求 3. 在http請求下建檢視結果樹 4. 在http請求下建聚合報告 5.在http請求下建圖形結果 6.執行 最後右擊執行緒組,單擊

QT一個簡單的答題介面

學了兩天的QT介面,今天老師佈置了作業讓我們用QT做一個簡單的單人答題介面 類似微信應用裡的頭腦王者,每十秒答一題,一共答5題,最後輸出分數。 下面是我自己的步驟、介面及程式:(儘量從簡的) 首先開啟QT ,新建一個應用程式 建立完成以後建立設計師介

java一個2048小遊戲

昨天,自己突發奇想,能不能在忙碌的學習裡抽一點時間來做一點事情,然後,我就有了一個要做一個2048小遊戲的想法。說真的,java我已經認真學習了一段時間了,現在也剛剛學到Swing,雖然做這個2048還有很多東西沒有學習過,但是,一邊學一邊做才是我們菜鳥的樣子吧。 做這個東

PopupWindow一個簡單的彈出窗體

首先在主介面定義一個點選事件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

Step by Step,JAVA一個FLAPPYBIRD遊戲(三)

遊戲介面的滾動背景 上一篇我們講了如何製作開始選單,開始選單比較簡單,就只涉及了一個Entity,接下來幾篇,我們要一步步實現遊戲介面,對應的gameState為GAME_STATE_PLAYING。 這一篇,我們先講滾動的背景是怎麼做到的。 Flappy

怎樣Java編寫一個簡單的計算器

我是自己純手工用Java編寫的計算器 //filename:JiShuan import java.awt.Color; import java.awt.EventQueue; import java.awt.Image; import javax.swing.JBu