课堂测验-计算最长英语单词链
Posted smartisn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课堂测验-计算最长英语单词链相关的知识,希望对你有一定的参考价值。
设计思想:先将单词都从文本中找出来,然后再建立两个数组,第一个放每一个单词的首字母,第二个放每一个单词的尾字母,然后根据这两个是否相同,放进一个int数组中,调出来,就可以
代码实现:
1 package txt读入; 2 3 import java.io.BufferedWriter; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 import java.io.IOException; 8 9 public class Max 10 public static void main(String[] args)throws IOException 11 Word word=new Word(); //单词的链头 12 Word lian,xin; 13 String str=""; 14 File f1=new File("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\飘英文版.txt"); 15 if(!f1.exists()) 16 17 System.out.println("文件不存在"); 18 19 else 20 FileReader f=new FileReader("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\飘英文版.txt"); //读取英文文件 21 22 23 char[] c=new char[1]; //每次读取一个字母 24 int b=0; 25 boolean exist=false; //判断单词是否存在于 word 链中 26 27 BufferedWriter writer2 = new BufferedWriter(new FileWriter(new File("E:\\\\\\\\578095023\\\\\\\\FileRecv\\\\\\\\软件工程\\\\\\\\课堂测试\\\\\\\\output1.txt"),true)); 28 29 30 File writeName=new File("E:\\\\\\\\578095023\\\\\\\\FileRecv\\\\\\\\软件工程\\\\\\\\课堂测试\\\\\\\\output1.txt"); 31 String S1=""; 32 String S2=""; 33 writeName.createNewFile(); 34 35 int num1=0; 36 int num2=0; 37 int[] Num1=new int[1000000]; 38 int[] Num2=new int[1000000]; 39 40 41 42 while((b=f.read(c))!=-1) //每次读取一个字母直到最后 43 44 int i1=1; 45 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始 46 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("‘")) 47 48 lian=word; 49 while(lian!=null) 50 51 if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++ 52 53 lian.geshu++;exist=true;break; 54 55 else 56 57 if(i1==1) 58 59 60 61 Num1[num1]=num1; 62 63 String ss=str.substring(0, 1); 64 65 S1=S1+ss; 66 num1=num1+1; 67 68 69 if(i1==1) 70 71 Num2[num2]=num2; 72 String ss=str.substring(str.length()-1, str.length()); 73 74 S2=S2+ss; 75 num2=num2+1; 76 77 78 79 i1=i1+1; 80 lian=lian.next; 81 82 83 if(exist==false) //如果不存在,则在单词链中添加 84 85 xin=new Word(str,1); 86 xin.next=word.next; 87 word.next=xin; 88 str=""; 89 90 else 91 92 exist=false; 93 str=""; 94 95 96 else //单词 97 98 str+=String.valueOf(c); 99 100 101 102 103 if(num1==1) 104 105 System.out.println("只有一个单词"); 106 107 else 108 109 if(num1==0) 110 111 System.out.println("没有单词"); 112 113 114 115 else 116 117 118 System.out.println(S1); 119 System.out.println(S2); 120 121 System.out.println(num1); 122 for(int im=0;im<num1;im++) 123 124 String s1=S1.substring(im, im+1); 125 int ii=1; 126 for(int in=0;in<num1;in++) 127 128 129 String s2=S2.substring(in, in+1); 130 131 int n1=Num1[im]; 132 int n2=Num2[im]; 133 134 if(!s1.equals(s2)) 135 136 System.out.println("没有首尾相连单词"); 137 138 139 140 if(s1.equals(s2)) 141 142 143 144 145 146 int N=20; 147 for(int i=1;i<=10;i++) 148 149 xin=new Word("",0); 150 lian=word.next; 151 //找到单词链中个数最多的 152 while(lian!=null) 153 154 155 xin=lian; 156 157 lian=lian.next; 158 159 int m=n1-1; 160 if(i==n1-1) 161 162 163 System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 164 165 try 166 167 BufferedWriter writer = new BufferedWriter(new FileWriter(new File("E:\\\\\\\\578095023\\\\\\\\FileRecv\\\\\\\\软件工程\\\\\\\\课堂测试\\\\\\\\output1.txt"),true)); 168 writer.write("\\n"+xin.value); 169 writer.close(); 170 171 172 173 catch (IOException e) 174 e.printStackTrace(); 175 176 177 178 179 // if(i==m) 180 // 181 // System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 182 // try 183 // 184 // BufferedWriter writer = new BufferedWriter(new FileWriter(new File("E:\\\\\\\\578095023\\\\\\\\FileRecv\\\\\\\\软件工程\\\\\\\\课堂测试\\\\\\\\output1.txt"),true)); 185 // writer.write("\\n"+xin.value); 186 // writer.close(); 187 // 188 // 189 // 190 // catch (IOException e) 191 // e.printStackTrace(); 192 // 193 // 194 // 195 // if(i==m) 196 // 197 // System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 198 // try 199 // 200 // BufferedWriter writer = new BufferedWriter(new FileWriter(new File("E:\\\\\\\\578095023\\\\\\\\FileRecv\\\\\\\\软件工程\\\\\\\\课堂测试\\\\\\\\output1.txt"),true)); 201 // writer.write("\\n"+xin.value); 202 // writer.close(); 203 // 204 // 205 // 206 // catch (IOException e) 207 // e.printStackTrace(); 208 // 209 // 210 // 211 //输出单词链中个数最多的 212 213 lian=word; 214 //删除单词链中单词个数最多的 215 while(lian.next!=null) 216 217 if(lian.next.value.equalsIgnoreCase(xin.value)) 218 219 lian.next=lian.next.next; 220 break; 221 222 lian=lian.next; 223 224 225 226 227 228 229 ii=ii+1; 230 231 232 233 234 235 236 // int N=20; 237 // for(int i=1;i<=N;i++) 238 // 239 // xin=new Word("",0); 240 // lian=word.next; 241 // //找到单词链中个数最多的 242 // while(lian!=null) 243 // 244 // if(lian.geshu>xin.geshu) 245 // 246 // xin=lian; 247 // 248 // lian=lian.next; 249 // 250 // //输出单词链中个数最多的 251 // System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu); 252 // lian=word; 253 // //删除单词链中单词个数最多的 254 // while(lian.next!=null) 255 // 256 // if(lian.next.value.equalsIgnoreCase(xin.value)) 257 // 258 // lian.next=lian.next.next; 259 // break; 260 // 261 // lian=lian.next; 262 // 263 // 264 265 266 267 268 269
代码实现:
以上是关于课堂测验-计算最长英语单词链的主要内容,如果未能解决你的问题,请参考以下文章