字符串统计

来源:互联网 发布:比斯利数据 编辑:程序博客网 时间:2024/06/13 17:43
//04字符串统计//从键盘输入字符串(或者从硬盘中读入文本文件),要求: //(1)统计26个字母每个字母开头的单词数; //(2)统计单词中含“or”字符串的单词数; //(3)统计长度为3的单词数。import java.io.*;//导入io包public class Statistics{//定义一个统计(Statistics)类static String strLine;//读取文本的每一行static char letter[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//含52个字符的数组static int total[]=new int[26];//动态申请数组,用于统计26个字母每个字母开头的单词数public static void main(String args[]){//主方法try{FileReader fr=new FileReader("C:\\Users\\Sherlock\\Desktop\\story.txt");//创建FileReader对象,用来读取字符流BufferedReader br=new BufferedReader(fr); //缓存指定文件的输入StringBuffer str=new StringBuffer();//将读入的每一行拼接在一起while(br.ready()){strLine=br.readLine();//读入一行数据System.out.println("*******");System.out.println(strLine);//输出读入的数据System.out.println(strLine.replace(',',' '));strLine=strLine.replace(',',' ');//将逗号替换成空格,输出改变后的结果System.out.println(strLine.replace('.',' '));strLine=strLine.replace('.',' ');//将句号替换成空格,输出改变后的结果System.out.println(strLine.replace('?',' '));strLine=strLine.replace('?',' ');//将问号替换成空格,输出改变后的结果System.out.println(strLine.replace('!',' '));strLine=strLine.replace('!',' ');//将感叹号替换成空格,输出改变后的结果System.out.println(strLine.replace(':',' '));strLine=strLine.replace(':',' ');//将封号替换成空格,输出改变后的结果System.out.println(strLine.replace('(',' '));strLine=strLine.replace('(',' ');//将左括号替换成空格,输出改变后的结果System.out.println(strLine.replace(')',' '));strLine=strLine.replace(')',' ');//将右括号替换成空格,输出改变后的结果System.out.println(strLine.replace(" – "," "));strLine=strLine.replace(" – "," ");//将连接符替换成空格,输出改变后的结果//注意:此时还未处理单引号str.append(strLine);//将每一行数据进行拼接 }System.out.println("-----------------------------------***********--------------------------------------------------");br.close();//关闭缓存流fr.close();//关闭字符流//-------------------------------------------------------------------------System.out.println(str);//输出拼接后的结果System.out.println();String a= str.toString();//类型转换String[] split = a.split(" ");//按空格进行拆分aint len=split.length;//len为单词总数for(int i=0;i<len;i++){if(split[i].length()>0&&split[i].charAt(0)=='\'')//判断每个单词首部字母是否是单引号    split[i]=split[i].replace("'"," ");//如果是,就用空格将其替代}//---------------------------------------------------------------------------------System.out.println();int newline=1;//控制每行输出的单词数,方便查看输出结果for (String s : split) {if(newline%30==0){System.out.println(s);//输出每个单词,并且换行}else   System.out.print(s+" ");//输出每个单词,并且输出一个空格newline++;}System.out.println();System.out.println("-----------------------------------***********--------------------------------------------------");//---------------------------------单词总数------------------------------------------System.out.println();int num=0;for(int i=0;i<len;i++){//统计单词数if(split[i].length()>0)//判断单词长度是否大于0num++;//若是,则加1}System.out.println("The total number of words is "+num);//输出结果//---------------------------------首字母--------------------------------------------for(int i=0;i<len;i++){//检验所有单词for(int j=0;j<52;j++)//52个字母(大小写),每一个字母都进行一次匹配if(split[i].length()>0&&split[i].charAt(0)==letter[j])//单词长度大于0且首字母等于某个字母total[j%26]++;//该字母数量加一,注意:a与A是同一个字母}System.out.println();for(int i=0;i<26;i++){//输出所有字母的数量System.out.println("The number of words at the beginning of "+letter[i]+" letter is "+total[i]);}//---------------------------------长度为3的单词数--------------------------------------int count1=0;for(int i=0;i<len;i++){if(split[i].length()==3)//判断单词长度是否为3count1++;//计数器加1}System.out.println();//输出结果System.out.println("The total number of words with length 3 is "+count1);//-----------------------------------or的数量----------------------------------------------int length=str.length();//用未拆分前的的str的长度,方便使用        int count=0;        for(int i=0;i<length-1;i++)//对所有字母进行判断        {        if(str.charAt(i)=='o'&&str.charAt(i+1)=='r')//前一个字母为'o'且后一个字母为'r'        count++;  //计数器加1                     }        System.out.println("The total number of 'or' is "+count);//输出结果        }catch(IOException e){//输入输出流出现问题,则抛出异常e.printStackTrace();}    }}

原创粉丝点击