遇到的问题:txt不区分大小写然而主文本区分,很是不知为何
另一个问题,可解决就是目前一个动词放在一个txt下一步只需要针对第一个单词进行int i来判断是不是第一个,然后再整合
1 Scanner scan=new Scanner(System.in); 2 Word word=new Word(); //单词的链头 3 Word lian,xin; 4 String str=""; 5 FileReader f=new FileReader("E:\578095023\FileRecv\软件工程\课堂测试\读入txt\飘英文版.txt"); //读取英文文件 6 char[] c=new char[1]; //每次读取一个字母 7 int b=0; 8 boolean exist=false; //判断单词是否存在于 word 链中 9 Word word1=new Word(); 10 Word lian1,xin1; 11 String str1=""; 12 FileReader f1=new FileReader("E:\578095023\FileRecv\软件工程\课堂测试\读入txt\stopwords.txt"); 13 char[] c1=new char[1]; 14 int b1=0; 15 boolean exist1=false; 16 Word word2=new Word(); 17 Word lian2,xin2; 18 String str2=""; 19 FileReader f2=new FileReader("E:\578095023\FileRecv\软件工程\课堂测试\读入txt\take.txt"); 20 char[] c2=new char[1]; 21 int b2=0; 22 boolean exist2=false; 23 //stopwords文本 24 while((b1=f1.read(c1))!=-1) //每次读取一个字母直到最后 25 { 26 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 27 if(String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals(""")||String.valueOf(c1).equals("'")) 28 { 29 30 lian1=word1; 31 while(lian1!=null) 32 { 33 34 if(lian1.value.equalsIgnoreCase(str1)) //如果单词在单词链中存在,则单词个数++ 35 { 36 lian1.geshu++;exist1=true;break; 37 } 38 else 39 { 40 lian1=lian1.next; 41 } 42 43 } 44 45 if(exist1==false) //如果不存在,则在单词链中添加 46 { 47 xin1=new Word(str1,1); 48 xin1.next=word1.next; 49 word1.next=xin1; 50 str1=""; 51 } 52 else 53 { 54 exist1=false; 55 str1=""; 56 } 57 } 58 else //单词 59 { 60 str1+=String.valueOf(c1); 61 } 62 } 63 while(true) 64 { 65 xin1=new Word("",0); 66 lian1=word1.next; 67 //找到单词链中个数最多的 68 while(lian1!=null) 69 { 70 System.out.println(lian1.value); 71 lian1=lian1.next; 72 } 73 if(lian1==null) 74 { 75 break; 76 } 77 } 78 System.out.println("如果需要增加 请输入1,否则输入0"); 79 int shu=0; 80 shu=scan.nextInt(); 81 if(shu==1) 82 { 83 add(); 84 while((b1=f1.read(c1))!=-1) //每次读取一个字母直到最后 85 { 86 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 87 if(String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals(""")||String.valueOf(c1).equals("'")) 88 { 89 90 lian1=word1; 91 while(lian1!=null) 92 { 93 94 if(lian1.value.equalsIgnoreCase(str1)) //如果单词在单词链中存在,则单词个数++ 95 { 96 lian1.geshu++;exist1=true;break; 97 } 98 else 99 { 100 lian1=lian1.next; 101 } 102 103 } 104 105 if(exist1==false) //如果不存在,则在单词链中添加 106 { 107 xin1=new Word(str1,1); 108 xin1.next=word1.next; 109 word1.next=xin1; 110 str1=""; 111 } 112 else 113 { 114 exist1=false; 115 str1=""; 116 } 117 } 118 else //单词 119 { 120 str1+=String.valueOf(c1); 121 } 122 } 123 while(true) 124 { 125 xin1=new Word("",0); 126 lian1=word1.next; 127 //找到单词链中个数最多的 128 while(lian1!=null) 129 { 130 System.out.println(lian1.value); 131 lian1=lian1.next; 132 } 133 if(lian1==null) 134 { 135 break; 136 } 137 } 138 } 139 //动态文本 140 while((b2=f2.read(c2))!=-1) //每次读取一个字母直到最后 141 { 142 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 143 if(String.valueOf(c2).equals(" ")||String.valueOf(c2).equals(" ")||String.valueOf(c2).equals(" ")||String.valueOf(c2).equals(",")||String.valueOf(c2).equals(".")||String.valueOf(c2).equals(""")||String.valueOf(c2).equals("'")) 144 { 145 146 lian2=word2; 147 while(lian2!=null) 148 { 149 150 if(lian2.value.equalsIgnoreCase(str2)) //如果单词在单词链中存在,则单词个数++ 151 { 152 lian2.geshu++;exist2=true;break; 153 } 154 else 155 { 156 lian2=lian2.next; 157 } 158 159 } 160 161 if(exist2==false) //如果不存在,则在单词链中添加 162 { 163 xin2=new Word(str2,1); 164 xin2.next=word2.next; 165 word2.next=xin2; 166 str2=""; 167 } 168 else 169 { 170 exist2=false; 171 str2=""; 172 } 173 } 174 else //单词 175 { 176 str2+=String.valueOf(c2); 177 } 178 } 179 while(true) 180 { 181 xin2=new Word("",0); 182 lian2=word2.next; 183 //找到单词链中个数最多的 184 while(lian2!=null) 185 { 186 System.out.println(lian2.value); 187 lian2=lian2.next; 188 } 189 if(lian2==null) 190 { 191 break; 192 } 193 } 194 195 //飘文本 196 while((b=f.read(c))!=-1) //每次读取一个字母直到最后 197 { 198 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 199 if(String.valueOf(c).equals(" ")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals(""")||String.valueOf(c).equals("'")) 200 { 201 202 lian=word; 203 while(lian!=null) 204 { 205 206 if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++ 207 { 208 lian.geshu++;exist=true;break; 209 } 210 else 211 { 212 int l1=0,l2=0; 213 while(true) 214 { 215 xin1=new Word("",0); 216 lian1=word1.next; 217 //找到单词链中个数最多的 218 while(lian1!=null) 219 { 220 if(str.equals(lian1.value)) 221 { 222 l1=1; 223 } 224 lian1=lian1.next; 225 226 } 227 if(lian1==null) 228 { 229 break; 230 } 231 } 232 233 if(l1==1) 234 { 235 break; 236 } 237 lian=lian.next; 238 } 239 240 } 241 242 if(exist==false) //如果不存在,则在单词链中添加 243 { 244 while(true) 245 { 246 xin2=new Word("",0); 247 lian2=word2.next; 248 //找到单词链中个数最多的 249 while(lian2!=null) 250 { 251 if(str.equals(lian2.value)) 252 { 253 254 str="she"; 255 } 256 lian2=lian2.next; 257 258 } 259 if(lian2==null) 260 { 261 break; 262 } 263 } 264 xin=new Word(str,1); 265 xin.next=word.next; 266 word.next=xin; 267 str=""; 268 } 269 else 270 { 271 exist=false; 272 str=""; 273 } 274 } 275 else //单词 276 { 277 str+=String.valueOf(c); 278 } 279 } 280 281 282 // 循环10次 283 System.out.println("请输入您想查询的前几个出现此处最多的单词"); 284 int N=scan.nextInt(); 285 for(int i=1;i<=N;i++) 286 { 287 xin=new Word("",0); 288 lian=word.next; 289 //找到单词链中个数最多的 290 while(lian!=null) 291 { 292 if(lian.geshu>xin.geshu) 293 { 294 xin=lian; 295 } 296 lian=lian.next; 297 } 298 //输出单词链中个数最多的 299 System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 300 lian=word; 301 //删除单词链中单词个数最多的 302 while(lian.next!=null) 303 { 304 if(lian.next.value.equalsIgnoreCase(xin.value)) 305 { 306 lian.next=lian.next.next; 307 break; 308 } 309 lian=lian.next; 310 } 311 } 312 }