package 統計英文字母出現頻率;
import java.io.*;
import java.io.File.*;
import java.util.Scanner;
public class Collect {
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
char [] value = new char[20];
int [] amount = new int[20];
for(int i = 0; i< 20;i++)
{ amount[i] = 0;}
reader = new InputStreamReader(new FileInputStream(file));
for(int i = 0;i < 20 ;i++)
{value[i] = (char) reader.read();}
for(int j = 0 ;j < 20 ;j ++)
{
for(int k = j+1 ; k < 20 ; k++) {
if(value[k]==value[j]){
amount[j]++;
}
else if(value[j]==value[j+1]) {
j++;break;
}
else break;
}
}
int temp=0;
for(int i = 0;i < 20;i++)
{
for(int j = i+1 ; j < 20 ; j ++) {
if(amount[j]>amount[i]) {
temp = j;
}
else temp = i;
}
}
System.out.println("出現最屢次數的字母:"+value[temp]+"其出現的次數:"+amount[temp]);
reader.close();
} catch (Exception e) {
e.printStackTrace();//拋異常
}
}
public static void main(String args[]) {
readFileByChars("file.txt");
}
存在的很大問題,對於讀寫文件,查了半天資料也剛剛瞭解,在網上找到了一段讀取文件的代碼,勉強看得懂。能夠實現一個個字符保存到value數組中,可是對於重複的字符沒有篩選功能,因此只可以實現統計單詞出現的次數。可是對於重複的字符沒有篩選功能,字符數組建多大也一直迷糊。至於出現的頻率,我用amoun數組實現,可是存在一點小小的問題。對於數組的比較原本是一個很簡單的循環問題,可是在這裏不知道爲何實現的很慢,並且思惟比較混亂。在這個程序的編寫中,還向以往那樣,沒有模塊化,沒有用類來實現,仍是用了一抹都在主函數裏邊實現,對於for循環語句用的次數太多,致使代碼太複雜,運行很複雜。對於文件的操做這一塊的內容,課後還要狠狠的下功夫,真是書到用時方恨少啊,代碼到用時才發現本身什麼都不會