字母統計|英語的26 個字母在一本小說中是如何分布的
阿新 • • 發佈:2018-10-15
out 無法 ace 數據讀取 != exce 文件夾 ota 轉化
public static String input() { String s=""; //表示磁盤路徑的兩種表示方式:1、\\ 2、/ try { //1、建立連接 InputStream is = new FileInputStream("F:/新建文件夾/tongji/aaa.txt"); //2、開始讀取信息 //先定義一個字節數組存放數據 byte[] b = new byte[10000];//把所有的數據讀取到這個字節當中//聲明一個int存儲每次讀取到的數據 int i = 0; //定義一個記錄索引的變量 int index = 0; //循環讀取每個數據 while((i=is.read())!=-1){//把讀取的數據放到i中 b[index]=(byte) i; index++; } //把字節數組轉成字符串 //關閉流 is.close(); s=new String(b); } catch (FileNotFoundException e) { // TODO Auto-generated catch block //系統強制解決的問題:文件沒有找到 e.printStackTrace(); } catch (IOException e) { //文件讀寫異常 // TODO Auto-generated catch block e.printStackTrace(); }return s; }
public static void main(String[] args) { //定義需要計算字母出現次數的文本 String text=daoruchu.input(); //定義26個字母 String letter="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; calculate(text,letter); } public static void calculate(String text,String letter) { //定義存儲各字母出現次數的數組 int []counter=new int[52]; //定義字母總個數的計數器。排除標點符號,空格和數字。 int total_counter=0; //將string類型轉化成char類型 char[] text_tr=text.toCharArray(); char[] letter_tr=letter.toCharArray(); //計算各字母出現次數以及總字母數 //外層循環,遍歷26個字母 for(int i=0;i<52;i++) { //內層循環,遍歷待計算文本 for(int j=0;j<text_tr.length;j++) { //字母每在文本中出現一次,字母計數器加一,總字母個數計數器加一 if(text_tr[j]==letter_tr[i]) { counter[i]++; total_counter++; } } } for(int i=0;i<52;i++) { //輸出結果 System.out.println(letter_tr[i]+"‘s number is "+counter[i]); } System.out.println("sum:"+total_counter); }
這個程序分為兩個部分:
1、第一個類實現文件的導入導出
2、第二個類實現字母的統計;
目前的問題:
文件導出仍然存在問題;主要問題是無法把統計結果轉換成文件導出的字節;
字母統計|英語的26 個字母在一本小說中是如何分布的