java-BLOG-1

news/2025/3/15 11:07:40/文章来源:https://www.cnblogs.com/c119/p/18503951

1.前言
第一二个题目集除了最后一个题目以及第三个题目集的第一个题目都比较简单,只要按照题目要求,创建相应的类,题目比较简单一般只需要创建一个类和相应的一些属性、方法,按照输入输出的要求进行创建就行。前两个题目集只需要做对相应的输出就能做对,而第三个题目集重点增加了对输入的不合法的判断,以及其对应输出。比如:第三个题目集的第二个题目。有超过1个日期不合法和第一行日期非法、第二行日期合法且有效这两个测试点,因为我用的是正则表达式,一开始就限定了范围,而导致超出的范围没办法判断,所以一直通不过。后面改了正则表达式的范围,才通过。对于这三个题目集的最后一个题目,难度大,需要创建多个类,输入和输出的格式和内容比较多,测试点多。

2.设计与分析
第一次题目集-答题判题程序-1
(1)类图

由于第一次我还没使用正则表达式,所以我使用的是String类里的方法,但它有很多局限性,必须要有固定格式而且操作繁琐。在后面使用正则表达式,才发现正则表达式是真的方便。

input.hasNextLine() 是 Java 中 Scanner 类的一个方法,用于检查输入中是否还有下一行可供读取。常用在读取文本文件或控制台输入时,通常与 input.nextLine() 方法一起使用,以确保在尝试读取下一行之前,输入流中确实还有数据。

使用TreeMap有一些十分方便的方法可以输出,不用自己格外写函数。

第二次题目集-答题判题程序-2
(1)类图

这个题目是在上次题目进阶的,所以我上次使用的是数组,发现数组有局限性,每次输出时都要一个循环,而且要传这个数组的长度,并且要提前设置长度,这会导致有空余。而用列表的话,它定义了很多好用的方法,不用自己再去定义函数了,省事了很多。

第三次题目集-答题判题程序-3
(1)类图
由于这次实验我没有留出足够的时间,导致我把所有功能写在一个类里,后面我把功能分成几个类,并重新画出类图。

这次实验终于使用了正则表达式,要根据输入格式设置符合的格式。

输入后要判断是否符合表达式,如果符合就进行操作,由于要存储数据,要用split来分隔数据,并进行储存。

3.踩坑心得
(1)正则表达式的数据范围
String regex = "^(([0-9]{4})-([0-9]{2})-(0[0-9]|[1-9][0-9]))$";
一开始正则表达式是月份和天数是固定在12和31以内的,但输出格式是如果第一行日期字符串非法,输出自定义的错误信息。所以导致输入天数和月份超过31、12时,代码输出没反应,导致测试点没过。
(2)计算两日期之差

如果是自己写个函数计算两个日期之间的差,是比较复杂的,可以直接使用这个代码可以轻松的算出值,非常方便。
(3)检查输入中是否还有下一行可供读取

如果没有以end为结尾的要求,就需要判断下一行是否有数据,可以考虑input.hasNextLine() 判断下一行是否还有数据。
(4)将String类型准换成int类型
在处理String数据时常常遇到这样的情况,要把其类型转换成int类型,可以使用Integer.parseInt()转换。

4.改进建议

5.总结
正则表达式确实方便,一开始我都不是使用正则表达式,用了之后我就发现它得定义得知识点有很多,所以还需要深入学习。类与类之间得数据传输感觉把握得不是很好,常常报错,还有就是类之间经常重复定义,明明这几个类的作用是一样的,可以用一个数据直接传,而不用传多次。同时类的定义和方法还需斟酌,定义几个类,其属性和方法是什么,这是关键,也是最难的,需要终身学习。有时我发现使用了一钟模式,我会依赖它,然后遇到问题时又会使用它来解决,可又是却又不是最佳方法,可能还更繁琐,所以需要尝试不同的方法,了解其好坏和适用场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/822547.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用opencvjs提取图片中的红色印章

首先看下效果:首先对于纯红色的印章提取,也就是通过提取红色 的像素然后得到印章的结果,然后通过在红色的图像中寻找圆圈检测来进行圈定印章的位置 源码位置:https://github.com/xxss0903/extractstamp第一步是提取红色内容function extractStampWithColorToOpencvMat(img,…

ELE-Electronics

Electronics是一本关于电子科学及其应用的国际同行评审开放获取期刊,同时也是一本跨学科多主题征稿期刊。@目录一、征稿简介二、重要信息三、服务简述四、投稿须知 一、征稿简介二、重要信息期刊官网:https://ais.cn/u/3eEJNv三、服务简述 CT/MRI图像中基于学习的韧带分割; 计…

题目集1~3总结与分析

一.前言 知识点考查和难度: 题目集一第一题 设计风扇Fan类考查了Java类的组成部分和具体的组成内容。 题目集一第二题 巩固了类和对象的使用,和其中的构造方法。 题目集一第三题 在第二题考查基础上添加了具体的方法。 题目集一第四题 进一步学习类的使用,做了简单的关联类…

idea 将文件夹改成source

首先可以 使用idea 右键选择 要更改的文件 make Directory as 选择 sources Root如果文件 不能选择, 可以 IDEA 直接点击 FILE 菜单 ,然后选择 Project Structure 然后 在 Modules 中,可以将文件夹 更改类型。

2024 CSP-J

2024 CSP-J P11227 扑克牌(模拟,STL) 题意 给定 \(n\) 张扑克牌,问若要凑齐所有花色点数,还需要几种牌。 数据规模与约定 对于 \(100\%\) 的数据,\(1 \le n\le 52\)。 题解 发现每种扑克牌是一个花色和点数的二元组。开一个二维数组当桶即可。 但是考虑到实现起来的方便性…

04 二进制

二进制位数,每个位都是右侧位数的两倍; 八位机,一次性处理八位数的二进制数10101010,八位数表示从0到255,比如八位绘画板一共255种颜色可以使用,一位数0、1为bit, 八位数构成一个基本数串作为为一个字节,基本数串byte,有些用字节作为储存单位;内存已经到GB,TB上万亿字…

Dynamics 365 查找类型的字段,选择界面要去掉新增按钮,但是不能去掉新增权限

Dynamics 365 查找类型的字段,选择界面要去掉新增按钮,但是不能去掉新增权限办法: 1、将对应的窗体添加到解决方案中,导出解决方案,解决方案里面可以隐藏。然后把字段的我记得是某个属性改为false就可以隐藏了 2、<IsInlineNewEnabled>false</IsInlineNewEnabled…

南昌航空大学-软件学院-22207107-胡优乐-JAVA第一次Blog作业

南昌航空大学-软件学院-22207107-胡优乐-JAVA第一次Blog作业 前言距离开学第一次接触java已然过去了将近两个月时间,在这段时间里我们总共进行了三次大作业联系,基于这三次大作业的体量及设计的知识点,难度分布,我做了以下的总结:1.第一次大作业总共有五题,分别是:1.设计…

IDEA如何将一个分支的代码合并到另一个分支(当前分支)

前言 我们在使用IDEA开发Java应用时,经常是和git一起使用的。我们对于git常用的操作包括提交,推送,拉取代码等。还有一个重要的功能是合并代码。 那么,我们应该如何合并代码呢? 如何合并代码 首先,我们选择当前的代码分支,点击一下。然后,我们点击下需要合并过来的分支…

SpringBoot编写WebApi~(1)idea创建项目并打包

1.idea创建springboot项目,参考 2、idea将springboot打包成jar,参考,对于新版idea默认使用gradle构建,则使用下面步骤build.gradle文件添加以下几行:// 打包配置 bootJar {archiveBaseName.set(xxx-project)archiveVersion.set(0.0.1)archiveFileName.set(xxx-project.jar…

基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现二

三、系统设计这是一款商用的古诗词网站平台,学生可以也可以用作毕设,如果需要自己搭建一个小说或者古诗词平台这个就可以满足、该系统可以直接上线部署运行,如果有需要这样的系统可以联系一下我,或者二次开发 或其他需求都可以来联系我。 技术点 语言:Java 数据库:Mysql P…

题目集1~3的总结性Blog

一、前言相关知识点:1、第一次题目集主要是对java的类的设计以及相关的方法的使用,包括数组的使用方法,类和对象的使用等进行考察。2、第二次题目集则是对第一次题目集的一次强化以及补充,要求掌握排序以及查找相关方法的使用,以及对于类与对象的概念进行了强调。3、第三次…