首页 > 其他分享 >最后一次Blog

最后一次Blog

时间:2023-06-23 14:23:16浏览次数:45  
标签:一次 最后 类图 initialCapacity Blog 课程 设计 成绩 输入

BLOG:

 

1.前言:最后几周的PTA难度明显上升,需要设计的类更多,尤其是学生成绩录入系统。还更考察对集合的使用,如Map,Set集合,利用他们自动排序 去重的功能,完成题目.

难度呈递增趋势。自己还是太菜,许多题目就没有拿到满分。随着本次的博客作业到来也预示着我的本学期的Java课程也来到了尾声,而本次的博客不仅仅是对近段时间

以来的学习做一个介绍,也是对本学期做一个总结。

 

2.设计与分析:

 

7-1 课程成绩统计程序-1

 

类图:

 

 

 


image.png

 

 

 

 

只过了51分,后面对异常的处理自己处理起来太费劲了。

 

 

 要明白如何对数据进行处理,否则难以写对。

 

利用如何构造方法,对最后的成绩进行计算。

 

 

合理设计成绩的计算方法。

 

 相关方法代码.

 

输入与输出类。

 

 此题是后面几道题的基础,后面会在此基础上拓展。

 

7-1 统计Java程序中关键词的出现次数

输入格式:

输入Java源码字符串,可以一行或多行,以exit行作为结束标志

输出格式:

  • 当未输入源码时,程序输出Wrong Format
  • 当没有统计数据时,输出为空
  • 当有统计数据时,关键字按照升序排列,每行输出一个关键字及数量,格式为数量\t关键字

输入样例:

在这里给出一组输入。例如:

//Test public method
public HashMap(int initialCapacity) {
        this(initialCapacity, DEFAULT_LOAD_FACTOR);
    }
    public HashMap(int initialCapacity, float loadFactor) {
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal initial capacity: " +
                                               initialCapacity);
        if (initialCapacity > MAXIMUM_CAPACITY)
            initialCapacity = MAXIMUM_CAPACITY;
        if (loadFactor <= 0 || Float.isNaN(loadFactor))
            throw new IllegalArgumentException("Illegal load factor: " +
                                               loadFactor);
        this.loadFactor = loadFactor;
        this.threshold = tableSizeFor(initialCapacity);
    }
exit
 

输出样例:

在这里给出相应的输出。例如:

1	float
3	if
2	int
2	new
2	public
3	this
2	throw
此题较上题较为简单,没有复杂的类图设计。  

 

 7-3 课程成绩统计程序-2

参考类图(与第一次相同,其余内容自行补充):


e724fa4193aa9ee32e78a68cd96fd6df_22401e04-c501-4b28-bb65-dabe39d374e7.png

 

 

 

这道题较1增加了实验成绩,所有要设计实验成绩类,并构造方法里增加数组。

注意计算实验成绩时,要对数组进行遍历。

 

利用集合处理分数。同理,与1一样 ,方法里进行遍历与查找,计算最后的总成绩。

 

 

相关成绩的计算方法,就是挨个遍历相关集合,找到与目标一致的数据,累加相除得到平均分。

 

最后输出结果。

 

 

 

 

 

 

 此题较1比较,更加复杂。类之间关系要更精密。对异常的处理还没法应付。只写了正常输入情况。

 

7-2 课程成绩统计程序-3

课程成绩统计程序-3在第二次的基础上修改了计算总成绩的方式,

要求:修改类结构,将成绩类的继承关系改为组合关系,成绩信息由课程成绩类和分项成绩类组成,课程成绩类组合分项成绩类,分项成绩类由成绩分值和权重两个属性构成。

完成课程成绩统计程序-2、3两次程序后,比较继承和组合关系的区别。思考一下哪一种关系运用上更灵活,更能够适应变更。

题目最后的参考类图未做修改,大家根据要求自行调整,以下内容加粗字体显示的内容为本次新增的内容。

 

参考类图(与第一次相同,其余内容自行补充):

fdada4ca193119ee30531ab82ffebbfa_9dbcf4e8-1627-4cf6-8764-cccf44947e2a.png

 

 

 

 

 

 

 与1,2不同这次要自己录入绩点。

其他的计算方法与1,2类似,要修改计算的方法,实验成绩方法计算要改进。

 

 

 

 用数组构造实验成绩。

 

 两个构造方法

 

 相关成绩的计算方法:

 

 

 

 

 

 

 

 

 

 

 

总体上这道题三次迭代越来越难,各有特色。但对异常情况的处理,都没好好解决。自己努力还是不够。

 

做每一个题目集是不要轻言放弃,要迎难而上,自己努力去学。

 

遇到复杂的系统问题不能慌张,要静下心,一步一步分析。问题就会迎刃而解。

 

 

 3.踩坑心得:

 

对于这三道题,总体来说是能写出来的努力写了,不会的怎么也写不出。

 

1.首先写系统的输入,要学会用lambda表达式筛选信息。

 

2.其次可以书写多个构造方法,构造一个类的不同情况

 

3.对于复杂的数据,可以储存在集合中对数据处理,然后输出。

 

4.在方法中多次循环,会出现重复遍历的情况,增加内存。

 

5.对异常的处理,要从录入情况开始,不要到最后判断。否则很难。

 

6.从这次作业,我们才真正开始了对于类的设计,通过这一次作业我相信我们对于类的运用,会更加的熟悉,在第一题中,

就已经开始了对于类的设计,一开始的时候,要设计主类和子类,在这两个类里面,要实现相应的功能,在子类中有运用了许多的方法,

实现多功能编程

 

 

4.改进建议:

输入时,我应该把main函数里的方法放在一个新构造的类中,这样在主类中就不会那么繁琐,

思路看起来也更清晰,可读性更强。更重要的是,Java本生为我们提供了很多诸如截取字符

串,排序......等诸多方法供我们直接调用,这样会节约很多时间。

 

并且,我应该多用类来写功能,

而不是什么代码都挤到同一个类中,调试起来就很麻烦,而且利用率低,可重复性不高。

 

而且判断筛选信息时,使用多次if else if判断,代码可读性不强,过于复杂。

成员方法设计有些许问题,导致参数在方法里多次循环,浪费时间与内存。

 

 

5。总结:

 

这次是本学期最后一次作业。这学期学到很多java知识,能不能熟练运用就靠自己了。

 

1.首先关于正则表达式我觉得还是非常有必要将它弄懂,因为它在判断字符串时非常有用。效率很高很方便。

 

2.做每一个题目集是不要轻言放弃,要把自己能写的努力去写。

 

3.搞清楚类的关系,是关联 依赖 还是聚合 组合。方便设计类图。

 

4.学会仔细读题,不然最后出错要从头来过,重新设计,浪费时间精力。

 

5.在面向对象设计中,不要所有代码写在一个类,要分而治之,增加利用率,可读性。

 

 

在最后的学习阶段,学到了很多有用的知识,如集合框架,lambda ,正则表达式。

 

在许多细节方面,要多多学习,不能马虎,要熟练运用所学知识,如果不多加练习,终是

 

纸上谈兵,自己理解不深。

 

教学建议:

 

我觉得老师可以出一些比较中等的题目,能稍微给点提示,给出一个较为标准的答案,给那些没有头绪设计类关系的同学一些提示,不然自己研究很浪费时间精力,

 

在每次作业完结后,应该对难题进行讲解,让我们在写完题目集后,明白自己还有哪些不足。

 

在自我评价上,自己努力还不够,在遇到很难的问题,时间不够就会放弃,没有专心研究。可能自己有点懒惰吧。

 

希望自己以后能克服此类问题

标签:一次,最后,类图,initialCapacity,Blog,课程,设计,成绩,输入
From: https://www.cnblogs.com/bbbgk/p/17499094.html

相关文章

  • 头一次见单例模式讲的如此透彻
    简介单例模式是一种常用的软件设计模式,用于创建类型。通过单例模式的方法创建的类在当前进程中只有一个实例。单例模式的类只能允许一个实例存在。单例模式的作用是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。组成部分:私有化构造方法。私有化内部......
  • BLOG-3
    一、前言先叠个甲,针对上次互评同学们的评论,我这次虽说也写上了题目,但我写了一万多字,真的没有水字数!!而且也没用ChatGPT写,麻烦各位帅哥美女给高点分儿,我也保证在互评时都打90分以上。1.知识点:LinkedHashMap和HashMap是有区别的,前者是按插入顺序储存元素,后者是哈希表排序会在后面......
  • postgresql获取基于当前时间计算的当月第一天,最后一天,下个月的第n天等功能
    问题现象:​今天在项目开发中遇到了一个需求,在编写某个功能时,需要使用到基于某个时间(如当前时间),去获取本月第一天或下个月的第一天的数据.问题分析:通过查询资料可以得知,要实现这个需求并不容易,在sql语句中就能很好的获取到,这里我使用的是postgresql数据库,其他数......
  • 记一次Unable to open nested entry ‘BOOT-INFlib.jar‘. It has been compressed
    感谢原文:https://blog.csdn.net/weixin_38084097/article/details/126479173问题背景前段时间由于工作失误,误将工程项目中某一个依赖包没有添加@loadbalanced注解就直接打包依赖到的主工程中,并发送项目现场测试。出来混的,迟早都要还的。这不,今天就接到项目现场测试部同事投诉,说......
  • CSS中多次指定相同的属性,最后一个属性会覆盖前面的属性
     上面的截图中只有最后一个border有效果。通常为了浏览器的兼容性,我们会选择指定多个相同相同属性。 .wrap{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;}上面的代码兼容了旧版的safari和chrome浏览器,以及ie浏览器 ......
  • 记一次服务程序调试过程(linux进程打开文件句柄过多问题)
    最近在测试服务程序,对外提供HTTP服务(使用c++调用libevent实现,回调使用curl库)。开始测试几百个请求时,功能一直挺正常。但是加大请求数量后(请求量大于5000),出现很奇怪的现场,每次接收的响应大约在3400个左右时,服务程序不再返回响应。开始怀疑是http服务异常了,使用http工具单独再发请......
  • 记一次腾讯云轻量级服务器安装mysql配置完成后,外网无法访问问题
    一、配置信息正常1、防火墙配置通过2、mysql端口正常启动netstat-antlp|grep33063、配置都正常,但是telnet访问不通超时Operationtimedouttelnet124.223.98.2243306Trying124.223.98.224...telnet:connecttoaddress124.223.98.224:Operationtimedouttelne......
  • 记录一次 大意导致的错误(暂存)
    在部署到西藏职院测试流程时(Net6),有个在线预览功能,pc端可以,但是在微信端预览时就报错了,提示ERR_BLOCKED_BY_RESPONSE,百度设置x-frame-options=sameorigih,还是有问题,链接有一个http和一个https(问题就出在这里,微信端被强制输出为https导致),但是当时直接把流程界面通过h......
  • 代码随想录算法训练营第43天 | ● 1049. 最后一块石头的重量 II ● 494. 目标和
     第九章 动态规划 part05●  1049. 最后一块石头的重量 II ●  494. 目标和 ●  474.一和零    详细布置   1049. 最后一块石头的重量 II  本题就和 昨天的 416. 分割等和子集 很像了,可以尝试先自己思考做一做。 视频讲解:https://www......
  • 冒泡排序 最大的在最后面
    publicclassMaoPao{publicstaticvoidmain(String[]args){//冒泡排序最大的放在最后面//定义一个数组int[]arr={11,99,0,3,5,6,5,3,5,8,1};//前一个数和后一个数比较如果后一个数大放在后面//第一位3和第二位5比较......