《Java》Java實現一個“計算文字中某個詞出現頻率”的應用程式
阿新 • • 發佈:2018-11-12
一、目的
計算某個詞出現頻率,可以很好的對一篇文章水平的評價提供客觀依據,比如在技術類文章中出現“的”字的頻率太高,說明此文章邏輯不夠嚴謹,本次應用程式的目的就是計算出指定文字中指定詞出現的頻率。
二、程式演示
- 有如下一個文字檔案
w.txt
,我們計算“的”字出現的頻率。
“的”出現的頻率為:3/35=8%。 - 應用程式計算“的”字出現的頻率。
觀察可以看出計算結果一致。
三、原始碼
【ScanWords.java】
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.text.NumberFormat;
import java.util.Scanner;
public class ScanWords {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String BookName;
String txt = null;
String in = null;
boolean flag = true;
long count = 0;
long all = 0;
System.out.println("請錄入檢索文字:");
Scanner scan1 = new Scanner(System.in);
BookName = scan1.nextLine();
File file = new File(BookName);
if(!(file.exists())){ //利用exits()函式檢視文字是否存在
System.out.println("\n"+file.getName()+ "不存在");
System. exit(0);
}
System.out.println("請輸入檢索詞:");
try {
in = Integer.toHexString(System.in.read());//將控制檯輸入的字元轉化為16進位制
} catch (IOException e1) {
e1.printStackTrace();
}
while(flag){
try {
RandomAccessFile raf = new RandomAccessFile(BookName,"r");
for(int i=0;i<raf.length();i++){ //迴圈至文字末尾結束
txt = Integer.toHexString(raf.read()); //迴圈讀取文字字元
if(in.equals(txt)){ //判斷輸入的字元與讀取出來的字元的16進位制碼是否相等
count++;
}
}
all = raf.length();
flag = false;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/************計算百分比************/
NumberFormat bf = NumberFormat.getPercentInstance();
bf.setMinimumFractionDigits(0);
float rate = (float)count/all;
System.out.println("檢索詞詞頻:"+bf.format(rate));
}
}