对一篇英语文章内单词/字母的统计
作者:互联网
1 package fengzhuang; 2 import java.io.BufferedReader; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileReader; 6 import java.io.IOException; 7 import java.io.InputStreamReader; 8 import java.util.Scanner; 9 10 class Word 11 { 12 String value; 13 int geshu; 14 static Word next; 15 public Word(String value,int geshu) 16 { 17 this.value=value; 18 this.geshu=geshu; 19 next=null; 20 } 21 public Word() 22 { 23 this.value=""; 24 this.geshu=0; 25 next=null; 26 } 27 } 28 public class Ceshi { 29 public static void main(String[] args) { 30 System.out.println("请输入您想完成的功能:"); 31 int i=0; 32 for(int n=1;n<10;n++) 33 {System.out.println("1:统计字母;2:统计单词;3:指定单词"); 34 35 Scanner scan=new Scanner(System.in); 36 i=scan.nextInt(); 37 if(i==1) 38 { 39 Zimu(); 40 } 41 if(i==2) 42 { 43 try { 44 Quan(); 45 } catch (IOException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 } 50 if(i==3) 51 { 52 try { 53 Danci(); 54 } catch (IOException e) { 55 // TODO Auto-generated catch block 56 e.printStackTrace(); 57 } 58 } 59 System.out.println("是否退出 退出0,不退出-其他"); 60 n=scan.nextInt(); 61 if(n==0) 62 { 63 break; 64 } 65 } 66 } 67 static void Zimu() 68 { 69 try { 70 char shu[] = new char[10000000]; 71 char zimu[] = new char[52]; 72 int j=0; 73 int count[]=new int[52]; 74 String pathname="E:\\o1.txt"; 75 File filename=new File(pathname); 76 InputStreamReader reader=new InputStreamReader(new FileInputStream(filename)); 77 BufferedReader br=new BufferedReader(reader); 78 String line[]=new String[100];; 79 for(int i=0;i<line.length;i++){ 80 line[i]=br.readLine(); 81 } 82 br.close(); 83 int k=0; 84 while(line[k]!=null) { 85 for(int i=0;i<line[k].length();i++) { 86 shu[j]=line[k].charAt(i); 87 j++; 88 } 89 k++; 90 } 91 for(int i=0;i<shu.length;i++) { 92 switch(shu[i]) { 93 case 'a':zimu[0]='a';count[0]++;break; 94 case 'b':zimu[1]='b';count[1]++;break; 95 case 'c':zimu[2]='c';count[2]++;break; 96 case 'd':zimu[3]='d';count[3]++;break; 97 case 'e':zimu[4]='e';count[4]++;break; 98 case 'f':zimu[5]='f';count[5]++;break; 99 case 'g':zimu[6]='g';count[6]++;break; 100 case 'h':zimu[7]='h';count[7]++;break; 101 case 'i':zimu[8]='i';count[8]++;break; 102 case 'j':zimu[9]='j';count[9]++;break; 103 case 'k':zimu[10]='k';count[10]++;break; 104 case 'l':zimu[11]='l';count[11]++;break; 105 case 'm':zimu[12]='m';count[12]++;break; 106 case 'n':zimu[13]='n';count[13]++;break; 107 case 'o':zimu[14]='o';count[14]++;break; 108 case 'p':zimu[15]='p';count[15]++;break; 109 case 'q':zimu[16]='q';count[16]++;break; 110 case 'r':zimu[17]='r';count[17]++;break; 111 case 's':zimu[18]='s';count[18]++;break; 112 case 't':zimu[19]='t';count[19]++;break; 113 case 'u':zimu[20]='u';count[20]++;break; 114 case 'v':zimu[21]='v';count[21]++;break; 115 case 'w':zimu[22]='w';count[22]++;break; 116 case 'x':zimu[23]='x';count[23]++;break; 117 case 'y':zimu[24]='y';count[24]++;break; 118 case 'z':zimu[25]='z';count[25]++;break; 119 case 'A':zimu[26]='A';count[26]++;break; 120 case 'B':zimu[27]='B';count[27]++;break; 121 case 'C':zimu[28]='C';count[28]++;break; 122 case 'D':zimu[29]='D';count[29]++;break; 123 case 'E':zimu[30]='E';count[30]++;break; 124 case 'F':zimu[31]='F';count[31]++;break; 125 case 'G':zimu[32]='G';count[32]++;break; 126 case 'H':zimu[33]='H';count[33]++;break; 127 case 'I':zimu[34]='I';count[34]++;break; 128 case 'J':zimu[35]='G';count[35]++;break; 129 case 'K':zimu[36]='K';count[36]++;break; 130 case 'L':zimu[37]='L';count[37]++;break; 131 case 'M':zimu[38]='M';count[38]++;break; 132 case 'N':zimu[39]='N';count[39]++;break; 133 case 'O':zimu[40]='O';count[40]++;break; 134 case 'P':zimu[41]='P';count[41]++;break; 135 case 'Q':zimu[42]='Q';count[42]++;break; 136 case 'R':zimu[43]='R';count[43]++;break; 137 case 'S':zimu[44]='S';count[44]++;break; 138 case 'T':zimu[45]='T';count[45]++;break; 139 case 'U':zimu[46]='U';count[46]++;break; 140 case 'V':zimu[47]='V';count[47]++;break; 141 case 'W':zimu[48]='W';count[48]++;break; 142 case 'X':zimu[49]='X';count[49]++;break; 143 case 'Y':zimu[50]='Y';count[50]++;break; 144 case 'Z':zimu[51]='Z';count[51]++; 145 } 146 } 147 int ci=0; 148 int sum=0; 149 System.out.println("短文中各字母出现情况统计如下:"); 150 for(int i=0;i<52;i++) 151 { 152 if(count[i]!=0) { 153 ci++; 154 sum+=count[i]; 155 System.out.println(ci+".字母"+zimu[i]+"的出现次数是:"+count[i]); 156 } 157 } 158 System.out.println("字母共计:"+sum+"个"); 159 }catch (Exception e) { 160 e.printStackTrace(); 161 } 162 } 163 static void Quan()throws IOException 164 { 165 Word word=new Word(); //单词的链头 166 Word lian,xin; 167 String str=""; 168 FileReader f=new FileReader("E:\\o1.txt"); //读取英文文件 169 char[] c=new char[1]; //每次读取一个字母 170 int b=0; 171 boolean exist=false; //判断单词是否存在于 word 链中 172 while((b=f.read(c))!=-1) //每次读取一个字母直到最后 173 { 174 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 175 if(String.valueOf(c).equals("\r")||String.valueOf(c).equals("\n")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals("\"")||String.valueOf(c).equals("'")) 176 { 177 lian=word; 178 while(lian!=null) 179 { 180 if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++ 181 { 182 lian.geshu++;exist=true;break; 183 } 184 else 185 { 186 lian=lian.next; 187 } 188 } 189 if(exist==false) //如果不存在,则在单词链中添加 190 { 191 xin=new Word(str,1); 192 xin.next=word.next; 193 word.next=xin; 194 str=""; 195 } 196 else 197 { 198 exist=false; 199 str=""; 200 } 201 } 202 else //单词 203 { 204 str+=String.valueOf(c); 205 } 206 } 207 int N=20; 208 for(int i=1;i<=N;i++) 209 { 210 xin=new Word("",0); 211 lian=word.next; 212 //找到单词链中个数最多的 213 while(lian!=null) 214 { 215 if(lian.geshu>xin.geshu) 216 { 217 xin=lian; 218 } 219 lian=lian.next; 220 } 221 //输出单词链中个数最多的 222 System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 223 lian=word; 224 //删除单词链中单词个数最多的 225 while(lian.next!=null) 226 { 227 if(lian.next.value.equalsIgnoreCase(xin.value)) 228 { 229 lian.next=lian.next.next; 230 break; 231 } 232 lian=lian.next; 233 } 234 } 235 } 236 static void Danci()throws IOException 237 { 238 Word word=new Word(); //单词的链头 239 Word lian,xin; 240 String str=""; 241 FileReader f=new FileReader("E:\\o1.txt"); //读取英文文件 242 char[] c=new char[1]; //每次读取一个字母 243 int b=0; 244 boolean exist=false; //判断单词是否存在于 word 链中 245 while((b=f.read(c))!=-1) //每次读取一个字母直到最后 246 { 247 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 248 if(String.valueOf(c).equals("\r")||String.valueOf(c).equals("\n")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals("\"")||String.valueOf(c).equals("'")) 249 { 250 251 lian=word; 252 while(lian!=null) 253 { 254 255 if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++ 256 { 257 lian.geshu++;exist=true;break; 258 } 259 else 260 { 261 if(str.equals("a")||str.equals("the")||str.equals("and")) 262 { 263 break; 264 } 265 lian=lian.next; 266 } 267 268 } 269 270 if(exist==false) //如果不存在,则在单词链中添加 271 { 272 xin=new Word(str,1); 273 xin.next=word.next; 274 word.next=xin; 275 str=""; 276 } 277 else 278 { 279 exist=false; 280 str=""; 281 } 282 } 283 else //单词 284 { 285 str+=String.valueOf(c); 286 } 287 } 288 289 290 // 循环10次 291 System.out.println("请输入您想查询的前几个出现此处最多的单词"); 292 Scanner scan=new Scanner(System.in); 293 int N=scan.nextInt(); 294 for(int i=1;i<=N;i++) 295 { 296 lian=Word.next; 297 xin=new Word("",0); 298 lian=word.next; 299 //找到单词链中个数最多的 300 while(lian!=null) 301 { 302 if(lian.geshu>xin.geshu) 303 { 304 xin=lian; 305 } 306 lian=lian.next; 307 } 308 //输出单词链中个数最多的 309 System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 310 lian=word; 311 //删除单词链中单词个数最多的 312 while(lian.next!=null) 313 { 314 if(lian.next.value.equalsIgnoreCase(xin.value)) 315 { 316 lian.next=lian.next.next; 317 break; 318 } 319 lian=lian.next; 320 } 321 } 322 } 323 324 }
标签:String,字母,xin,next,单词,value,lian,一篇 来源: https://www.cnblogs.com/zmh-980509/p/10989893.html