zoukankan      html  css  js  c++  java
  • 计算最长英语单词链

    实验要求:

    大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。

    统一输入文件名称:input1.txt, input2.txt

    统一输出文件名称:output1.txt,output2.txt

    程序需要考虑下列异常状况:

    例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用户提示信息?

    如果文件没有任何单词、只有一个单词、没有可以首尾相连的单词,程序应该如何输出?

    如果输入文件有一万个单词,你的程序能多快输出结果?

    设计思想:将文件中的单词存入ArrayList数组中,分为前后两个数组,读入单词,经单词字母分解并且通过循环比较单词字母是否相同,相同写入结果文件,不同继续比较,直至找到最大接龙单词长度。

    实验代码:

    package com.piao;

     

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileReader;

    import java.io.FileWriter;

    import java.io.IOException;

     

    public class test00 {

     

          public static void main(String[] args) throws IOException {

                

     

                 String filename ="d:\input.txt";

                 File  a=new  File(filename);

           //judeFileExists(a);

           if(judeFileExists(a))

                 {

                        danci(filename);

                 }

           else

              {}

               

                

          }

     

          public static void danci(String s) throws IOException {

                   

                        BufferedReader br = new BufferedReader(new FileReader(s));

                        StringBuffer sb = new StringBuffer();

                        String text = null;

                        if ((text = br.readLine()) != null) {

                               sb.append(text);// 将读取出的字符追加到stringbuffer中

                        }else {

                               System.out.println("input.text为空请检查");

                        }

                        br.close(); // 关闭读入流

                        String str = sb.toString().toLowerCase(); // 将stringBuffer转为字符并转换为小写

                        String[] words = str.split("[^(a-zA-Z)]+"); // 非单词的字符来分割,得到所有单词

                        StringBuffer yao = new StringBuffer();

                        String b1=words[0];

                        yao.append(b1);

                        yao.append(" ");

                        //System.out.println(b1);

                        String end=b1.substring(b1.length()-1,b1.length());

                     //System.out.println(end);

                    for(int i=1;i<words.length;i++)

                    { 

                     String start=words[i].substring(0,1);

                     if(end.equals(start))

                     {

                           end=words[i].substring(words[i].length()-1,words[i].length());

                           yao.append(words[i]);

                           yao.append(" ");

                     }

                    }

                   

                   // for( String a:words)

                   // {

                         //  System.out.println(a);

                 //   }

                  //  System.out.println(yao.toString());

                    File file =new File("d:\output.txt");

                  try {

                       file.createNewFile();

                  } catch (IOException e) {

                     e.printStackTrace();     

                 }

               

                  try {

                      

                         FileWriter fw =new FileWriter(file);

                         fw.write(yao.toString());

                         fw.flush();

                         fw.close();

                  }

                  catch (IOException e) {

                            e.printStackTrace();     

                        }

              

          }

     

     

    // 判断文件是否存在

    public static boolean judeFileExists(File file) {

     

        if (file.exists()) {

            System.out.println("查看ouput.text");

            return true;

        } else {

            System.out.println("文件不存在");

            // try {

            //     file.createNewFile();

           //  } catch (IOException e) {

           // TODO Auto-generated catch block

          //      e.printStackTrace();     

         //   }

            return false;

        }

    }

    }

    实验截图:

     

     

    总结:此次实验借鉴了别人的代码,对文件的输入输出流更加熟练。

  • 相关阅读:
    调用外部 DLL 中的函数(显示调用)
    模式窗体与非模式窗体
    使用PChar和string类型时的内存分配技术
    保密卡程序的编写
    Dll 使用 PChar 参数的小例子
    delphi动态创建组件的颜色
    Dll 模式窗口与非模式窗口
    调用外部 DLL 中的函数(隐式调用)
    内核读写只读内存方法总结[Delphi描述][转帖]
    delphi资源文件制作及使用详解
  • 原文地址:https://www.cnblogs.com/1061321925wu/p/11060694.html
Copyright © 2011-2022 走看看