首页 > 其他分享 >2.27课堂小测

2.27课堂小测

时间:2023-02-27 20:55:23浏览次数:46  
标签:小测 charAt kk max int result end 课堂 2.27

课堂练习01题目:计算最长英语单词链。

一、题目内容:

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

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

二、题目要求:

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

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

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

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

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

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

 

项目结构

//shouwei.java 定义了一个结构体和相关文件读取方法

package piao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class shouwei {
public char start; //单词首字母
public char end; //单词尾字母
public int pos; //单词出现位置
public int sum; //单词是连续的第几个
public String word; //单词
public shouwei() {
}

@Override
public String toString() {
return "shouwei [start=" + start + ", end=" + end + ", pos=" + pos + ", sum=" + sum + ", word=" + word
+ "]";
}

public ArrayList<shouwei> symb(String s) { //将文件的单词分离出 删除符号等影响操作 返回一个list结构体

ArrayList<shouwei> kk=new ArrayList<shouwei>();

File file=new File(s);
StringBuffer end=new StringBuffer();
if(!file.exists()) {
System.out.print("该文件不存在");
System.exit(0);
}
try {
BufferedReader reader=new BufferedReader(new FileReader(file));
String text=null;
while((text=reader.readLine())!=null)
{
end.append(text);
}

} catch (IOException e) {
System.out.println("程序出现问题");
}
StringBuffer result=new StringBuffer();
for(int i=0;i<end.length();i++) {
if(end.charAt(i)>='a'&&end.charAt(i)<='z')
result.append(end.charAt(i));
else if(end.charAt(i)>='A'&&end.charAt(i)<='Z')
result.append(end.charAt(i));
else if(end.charAt(i)==' ')
result.append(end.charAt(i));
else
result.append(" ");

}
int pos1=0;
char start=' ';
char ende;
String word="";
for(int i=1;i<result.length()-1;i++) {
if(result.charAt(i)==' ')
continue;
if(result.charAt(i-1)==' ')
{
word+=result.charAt(i);
start=result.charAt(i);
continue;
}
if(result.charAt(i+1)==' ')
{
shouwei e =new shouwei();
word+=result.charAt(i);
ende=result.charAt(i);
pos1++;
e.start=start;
e.end=ende;
e.pos=pos1;
e.sum=0;
e.word=word;
kk.add(e);
word="";
start=' ';
ende=' ';
continue;
}
if((result.charAt(i)>='a'&&result.charAt(i)<='z')||(result.charAt(i)>='A'&&result.charAt(i)<='Z')) {
word+=result.charAt(i);
}

}
if(kk.size()==0) {
System.out.println("只有一个单词!");
System.exit(0);
}

return kk;

}
public int da(ArrayList<shouwei> kk) {   //返回最大单词链长度
int max=0;
int text=1;
for(int i=0;i<kk.size()-1;i++) {
if(kk.get(i).end==kk.get(i+1).start) {
text++;
kk.get(i).sum=text;
}
else text=1;

max=(max>text)?max:text;
}
return max;
}
public String pos(ArrayList<shouwei> kk) {  //返回最大的单词链
int pos=0;
int max=0;
String s="";
for(int i=0;i<kk.size();i++) {
if(kk.get(i).sum>max) {
max=kk.get(i).sum;
pos=i;
}
}
while(max>0) {
s+=kk.get(pos-max+2).word+" ";
max--;
}
return s;

}
public int position(ArrayList<shouwei> kk) {
int pos=0;
int max=0;
String s="";
for(int i=0;i<kk.size();i++) {
if(kk.get(i).sum>max) {
max=kk.get(i).sum;
pos=i;
}
}
return pos+1;

}

}

 

 

//Piao.java 主函数

package piao;

import java.util.ArrayList;
import java.util.Scanner;


public class Piao {

 

 

 

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入文件名:");
String text=sc.next();
ArrayList<shouwei> kk=new shouwei().symb(text);
System.out.println("最大长度是:"+new shouwei().da(kk));
System.out.println("最大单词链为:"+new shouwei().pos(kk));


}

}

标签:小测,charAt,kk,max,int,result,end,课堂,2.27
From: https://www.cnblogs.com/jiazq/p/17161872.html

相关文章

  • 2.27课堂测试总结
    课堂练习01题目:计算最长英语单词链。一、题目内容:大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N个不同的英语单词,我们能否写一个程序,快速找出最长......
  • 2023.2.27每日总结
    今天课堂练习代码如下packagektlx01;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOExc......
  • 2023.2.27——软件工程日报
    所花时间(包括上课):4h代码量(行):0行博客量(篇):1篇今天,上午复习了一些计算机网络的知识点,下午学习建民老师的课程。我了解到的知识点:1.复习了StringBuffer2.利用算法计算单......
  • 2.27今日总结
     今天建民老师为我们讲解了软件工程的基本概念,并叫我们完成单词的接龙。但我只会输入和输出。importjava.io.File;importjava.io.FileReader;importjava.io.FileWrit......
  • 2023.年2.27日软工日报
    今天下午又是四节的软件工程,老师讲了讲软件工程的定义。然后后边就是测试。课堂练习01题目:计算最长英语单词链。一、题目内容:大家经常玩成语接龙游戏,我们试一试英语的......
  • 2.27每日总结
    今天是周一,下午有四节软件工程的课。前两节老师给我们讲了讲课。到三四节时出了一道题给我们做。题目要求在一个文本文件中有N个不同的英语单词,我们能否写一个程序,快速......
  • 2.27每日博客
      今天上课讲了关于bug的相关知识,王老师用波音737飞机等案列讲解了bug的危害。此外,上课还测验了英语单词接龙的测试。计算最长英语单词链。一、题目内容:大家经常玩成......
  • 2.27今日总结
    今天下午上了建民老师的软件工程课,让我们从txt文档中弄一个单词接龙,什么都忘了,首先要进行文档的读入和输入文档内容。Filefile=newFile("E://3835.txt");fis=new......
  • 2.27每日总结6
    今天在软件工程下课后利用一个小时的时间进行了java语言中对文件的操作,然后对今天的课堂测试进一步做优化。学习参考网站:Java实例–读取文件内容|菜鸟教程(runoo......
  • 课堂练习01题目:计算最长英语单词链。
     一、题目内容:大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N个不同的英语单词,我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最......