Java编程题目:最大公共子串与ClockTime类实现

需积分: 0 16 下载量 38 浏览量 更新于2024-08-05 1 收藏 15KB DOC 举报
"此文档是Java上机考试题目,包含了三张试卷的内容,主要涉及字符串处理、时间类的设计、字符串相似度计算以及学生成绩文件处理。试卷三的第一题要求设计一个算法找出两个字符串的最大公共子串及其长度,第二题设计一个表示时间的ClockTime类,并实现相关方法。试卷四的第一题要求编写计算两个字符串相似度的函数,第二题则需处理学生成绩文件,按不同字段排序。" 在Java上机考试中,考生将面临以下几个关键知识点: 1. **最大公共子串算法**: - 题目一要求设计一个算法找到两个字符串s和t的最大公共子串。这通常通过动态规划解决,建立一个二维数组记录s和t中对应位置字符是否相等。数组的元素为1(相等)或0(不等)。然后沿着数组中的对角线(即所有公共子串的路径)找到最长的连续1,这些1对应的子串即为最大公共子串。 2. **自定义类的设计**: - 题目二要求创建一个`ClockTime`类,包含小时、分钟和上午/下午状态字段。类应包含构造函数、获取当前时间的小时、分钟和am/pm状态的方法,以及将时间转换为字符串和判断是否为工作时间的方法。`isWorkTime()`方法需判断时间是否在9:00 AM到5:00 PM之间。 3. **字符串相似度计算**: - 试卷四的第一题涉及到计算两个字符串的相似度,使用最大公共子串长度除以两者总长度的两倍。这里可以先调用之前题目的`maxString()`函数得到最大公共子串,然后根据公式`F(s, t) = 2 * |x| / (|s| + |t|)`计算相似度,并保留小数点后三位。 4. **文件处理与排序**: - 题目二要求设计一个程序处理包含学生姓名、学号、分数和等级的成绩文件。可以创建一个`Student`类,包含相应属性并实现比较器接口,以便根据姓名、学号或成绩进行排序。程序应能接收用户输入的排序方式(升序或降序),并自动完成对文件内容的排序。 在解答这些问题时,考生需要具备扎实的Java基础知识,包括类和对象的设计、动态规划算法、字符串操作、文件I/O、比较器接口的使用等。此外,对问题的理解和逻辑思维能力也是成功解题的关键。