首页 > 其他分享 >软件工程日报——第六天

软件工程日报——第六天

时间:2023-02-27 20:11:13浏览次数:28  
标签:word sentence 日报 System 第六天 length 软件工程 println out

今天课上,我们进行了一个小测试,是关于计算最长英语单词链的题目。内容如下:

一、题目内容

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

最长的定义是:最多的单次数量,和单词中字母的数量无关。

二、题目要求

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

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

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

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

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

 (3)如果输出文件有一万个单词,你的程序能多块输出结果?

 

 

 

 

package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;
public class test {

public static void OutputStream(String max) {
// 将数据写入文件
PrintStream ps = null;
try {
ps = new PrintStream(new FileOutputStream("C:\\Users\\adnim\\Desktop\\b.txt"));
//将完成运算后的数据输出到新的文件中
System.setOut(ps);

System.out.println(max);

} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (ps != null) {
ps.close();
}
}
}
public static void main(String[] args) throws FileNotFoundException {
File file = new File("C:\\Users\\adnim\\Desktop\\c.txt");// 读取文件
if (!file.exists()) {// 如果文件打不开或不存在则提示错误
System.out.println("文件不存在");
return;
}else {
if(file.exists() && file.length() == 0) {
System.out.println("文件为空!");
return;
}
}
long startTime = System.currentTimeMillis();
String[] strs=new String[10000000];
Scanner x = new Scanner(file);
int i=0;
boolean flag=false;
while(x.hasNextLine()) {
String[] str=x.nextLine().split("\\W+");
for(int ms=0;ms<str.length;ms++) {
if(!str[ms].equals("")&&str[ms].length()>2) {
flag=false;
//System.out.println(str[ms]);
if(i!=0) {
for(int t=0;t<i;t++) {
if(!str[ms].equals(strs[t])) {
flag=true;
}
}
}else {
flag=true;
}

if(flag) {
strs[i]=str[ms];
i++;
}

}

}
}
if(i==1) {
System.out.println("该文件只有一个单词!无法实现词语接龙");
}
String sentence = "";
String word="";
String max="";
for(int m=0;m<i;m++) {
sentence = strs[m];
word = sentence;
for(int j=m+1;j<i;j++) {
if(strs[j].toLowerCase().subSequence(0, 1).equals(word.toLowerCase().subSequence(word.length()-1,word.length())))
// if(strs[j].toLowerCase().subSequence(0, 1).equals(word.toLowerCase().subSequence(word.length()-1, word.length())))
{
word = strs[j];
sentence+="-"+word;
}
}

if(sentence.indexOf("-")!=-1) {
if(sentence.length()>max.length()) {
max = sentence;
}
// System.out.println(sentence);
}

}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime+"ms");
System.out.println(i);
if(max.length()!=0) {
OutputStream(max);
// System.out.println(max);
}else {
System.out.println("没有首尾相连");
}

}
}

三、心得体会
通过此次模拟练习,我又一次的温习了一遍java中关于文件操作的几个步骤,并且学习到了如果文件中的内容量过大,java是无法正常运行,我们必须将文件中的内容分隔开来分别操作然后通过一定的语句再将他们连接起来,最后实现大型数据的文件流操作。

标签:word,sentence,日报,System,第六天,length,软件工程,println,out
From: https://www.cnblogs.com/tianminggeng/p/17161702.html

相关文章

  • 2023.年2.27日软工日报
    今天下午又是四节的软件工程,老师讲了讲软件工程的定义。然后后边就是测试。课堂练习01题目:计算最长英语单词链。一、题目内容:大家经常玩成语接龙游戏,我们试一试英语的......
  • 软件工程学习第七天
        今天我们老师给我们讲述了软件工程的概念,软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明......
  • 软件工程心得体会
    不知不觉已经学了计算机快两年了,在大一的时候接触了c和c++,大二上接触了Java和html的编写。现在对编程也有了一定的了解和认识,也清楚知道要熟练掌握一门语言的必要性,也了解......
  • 今日报告-07
    今日打卡所花时间(包括上课):5h代码量(行):200发表博客:1篇(不包括本篇)了解到的知识点:今天没怎么看Android主要是补JAVAWEB,今天把javaweb的浏览插入做好了,主要以围绕开学......
  • 今日报告
    结语-今天有点儿摆代码时间(包括上课):5h代码量(行):150行博客数量(篇):2篇了解到的知识点:1、了解到了ECharts和mysql数据库实现地图的可视化,而不是单纯地柱状图和折线图的实现......
  • 软件工程(3)--原型模型
    前言这是基于我所学习的软件工程课程总结的第三篇文章。原型模型又称原型化模型、快速原型模型书上对于(快速)原型模型的描述是:快速原型是快速建立起的程序,它所能完成的功能往......
  • 软件工程心得体会
    通过上学期学过的软件工程科目和这学期课程的初步了解才让我真正意识到我们软件工程这门专业真正需要掌握的具体是什么。我一直以为软件工程重在编程技术的提升,通过编程水......
  • 今日报告-06
    今日打卡所花时间(包括上课):7h代码量(行):600发表博客:3篇(不包括本篇)了解到的知识点:Android:  安卓实现连接数据库并在应用页面向数据库中添加数据,相对布局的实际使用......
  • 软件工程开课博客
    自我介绍:来自软件工程专业的一个菜鸟,一个阳光开朗大男孩,比较懒惰,但是对新鲜事物有很浓厚的探索兴趣。现状,经验和计划:我是在对编程的兴趣基础上选择了软件工程专业,距离成为......
  • 2023年2月25日(软件工程日报)
    图像视图imageview在XML文件中,通过属性android:src设置图片资源正java代码中,调用setlmageResource方法设置图片的资源。    图像按钮ImageButton显示图片的图像......