package 统计英文字母出现频率;
import java.io.*;
import java.io.File.*;
import java.util.Scanner;
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");
}
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循环语句用的次数太多,导致代码太复杂,运行很复杂。对于文件的操作这一块的内容,课后还要狠狠的下功夫,真是书到用时方恨少啊,代码到用时才发现自己什么都不会