Loading

今日课上测试题总结-计算最长英语单词链

今天软工课上老师给的课堂作业总结一下

先看一下效果,

正常情况

没有文件

 文件内容为空

 单词数目为1

 输入文件

 成功输出到文件

 主要代码,注释写的比较详细

 1 import java.io.*;
 2 import java.util.*;
 3 
 4 public class FoundMax {
 5 
 6     public static void main(String[] args)throws FileNotFoundException, IOException  {
 7 
 8         File input_file=new File("input.txt");
 9         File output_file=new File("output.txt");
10 
11         if(!input_file.exists())
12         {
13             System.out.println("不存在此文件,无法进行");
14         }
15         else if(input_file.exists() && input_file.length() == 0) {
16             System.out.println("文件内容为空,无法进行");
17         }
18         else
19         {
20             ArrayList<ArrayList<String>> all_list=new ArrayList();
21 
22             BufferedReader br=new BufferedReader(new FileReader(input_file));
23             BufferedWriter bw = new BufferedWriter(new FileWriter(output_file)) ;
24             String s=br.readLine();//将文本文件中的所有信息变为字符串
25 
26             int i,j;
27 
28             String last_char;
29             String []s1=s.split(" ");//以空格为分割划分每个单词,s1为所有单词的数组
30 
31             if(s1.length==1)
32                 System.out.println("只有一个单词,无法计算最长英语单词链");
33             else
34             {
35                 System.out.println("你录入的单词为");
36                 for(i=0;i<s1.length;i++)
37                 {
38                     System.out.println(s1[i]);
39                 }
40                 for(j=0;j<s1.length;j++)//从第一个单词开始遍历,先拿第一个词做开头
41                 {
42                     ArrayList<String> list=new ArrayList<String>();//创建一个临时list
43                     last_char=s1[j].substring(s1[j].length()-1);//取出每个单词最后一个字母
44                     list.add(s1[j]);//把开头单词加入list
45                     for(i=1;i<s1.length;i++)//再一个个遍历后面的单词
46                     {
47 
48                         if(last_char.equals(s1[i].substring(0, 1)))//比对当前单词最后一个字母是否与比对的单词开头字母一致
49                         {
50                             list.add(s1[i]);//如果是,把这个单词往容器里添
51                             last_char=s1[i].substring(s1[i].length()-1);//添加完成后把添加的单词末尾字母提取出来
52                         }
53                         else
54                             continue;
55                     }
56                     all_list.add(list);//当前轮次遍历完成后把所得的容器加入容器的容器
57                 }
58                 int max=0;
59                 int count=0;
60 
61                 for(i=0;i<all_list.size();i++)//把所有容器的长度比较一下,找出最长的
62                 {
63                     if(max<all_list.get(i).size())
64                     {
65                         max=all_list.get(i).size();
66                         count=i;
67                     }
68                 }
69                 System.out.print("最长英语单词链是:");
70                 for(i=0;i<all_list.get(count).size();i++)
71                 {
72                     System.out.print(all_list.get(count).get(i));//遍历打印
73                     System.out.print(" ");//遍历打印
74                     bw.write(all_list.get(count).get(i));//遍历输出到文件
75                     bw.write(" ");
76                 }
77                 System.out.print("长度为:");
78                 System.out.print(all_list.get(count).size());
79                 br.close();
80                 bw.close();
81             }
82         }
83     }
84 
85 }

 

posted @ 2023-02-27 21:31  冰稀饭Aurora  阅读(18)  评论(0编辑  收藏  举报