1. 程式人生 > >《Java》Java實現一個“計算文字中某個詞出現頻率”的應用程式

《Java》Java實現一個“計算文字中某個詞出現頻率”的應用程式

一、目的

    計算某個詞出現頻率,可以很好的對一篇文章水平的評價提供客觀依據,比如在技術類文章中出現“的”字的頻率太高,說明此文章邏輯不夠嚴謹,本次應用程式的目的就是計算出指定文字中指定詞出現的頻率。

二、程式演示

  1. 有如下一個文字檔案w.txt,我們計算“的”字出現的頻率。
    在這裡插入圖片描述
    “的”出現的頻率為:3/35=8%。
  2. 應用程式計算“的”字出現的頻率。
    在這裡插入圖片描述
    觀察可以看出計算結果一致。

三、原始碼

【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)); } }