首页 > 其他分享 >PTA题目集4~6的总结

PTA题目集4~6的总结

时间:2024-06-09 14:55:28浏览次数:27  
标签:总结 Java 答题 PTA 电路 信息 题目 输入

前言

1.第四次题目集的7-1在答题程序-3的基础上新增了一些内容,输入的内容增加,并且输入的格式有更加灵活,很好的考察了我们对于信息的处理能力、对正则表达式相关知识点的掌握还有使用面向对象方法编程的熟练度。此外,相比于前面三题,这次题目的要求更加***钻和细致,非常考验我们当前对于Java语言的熟练度以及较强的逻辑思维和算法设计能力。这次题目的工作量相对较大,对我来说操作难度比较大,难以完成。

2.第五次题目集的7-1家居强电电路模拟程序-1是一道非常新颖的题目,与我们的的实际生活紧密相连,题干非常的长,容易使人望而生畏。这就很考验我们的信息阅读和信息提取的能力,需要从长篇大论中总结出与我们编写Java程序有关的数据和条件加以整合,还是比较麻烦的。但是当你把题目的思路理清之后,程序的设计和编写也就相对轻松。本次作业用到了Java中继承、多态的知识,让我对涉及到的Java知识点更加熟悉,同时还用到了电路相关的基础知识,综合性比较强。

3.第六次题目集的7-1家居强电电路模拟程序-2继承了前一次的题目,与第一次不同的是这次要考虑受控设备的电阻,受控设备多了一种落地扇,并且引入了并联电路,增加了题目的复杂性和变化性,初看时有些棘手。本题同样运用到了继承和多态的知识,主要是算法和逻辑方面需要考虑更多的情况。一开始以为第二次迭代只是简单的在第一次迭代的基础上进行稍微的改动和算法的完善,可是按照题目的要求思考下去,发现本次题目与第一次相比有很大的变动,主函数基本上全都进行了改动,并没有想象中的那么简单,写起来还是比较麻烦和费时间的。

设计与分析

用于处理学生答题情况的输入和输出。主要功能包括:

 

  • 读取输入的学生信息、试题信息和答题情况,存储在相应的数据结构中。
  • 根据输入的答题情况,计算学生的得分,并输出结果。
  • 支持删除试题信息的功能。
  • 判断输入格式是否正确

 

具体实现细节如下:

 

  1. 使用Scanner类从标准输入读取数据。
  2. 定义了两个Map对象,questionMap用于存储试题信息,testPaperMap用于存储试卷信息。
  3. 定义了一个List对象,students用于存储学生信息。
  4. 使用while循环不断读取输入,直到遇到"end"为止。
  5. 根据输入的字符串,判断是哪种类型的输入,并进行相应的处理。
  6. 对于"#N:"开头的字符串,表示试题信息,将其存储到questionMap中。
  7. 对于"#T:"开头的字符串,表示试卷信息,将其存储到testPaperMap中。
  8. 对于"#X:"开头的字符串,表示学生信息,将其存储到students列表中。
  9. 对于"#S:"开头的字符串,表示答题情况,根据答题情况计算学生的得分,并输出结果。
  10. 对于"#D:"开头的字符串,表示删除试题信息,从questionMap中移除对应的试题。
  11. 如果输入的字符串不符合预期格式,输出"wrong format"提示。

 

代码实现了一个简单的学生答题系统,可以处理学生信息、试题信息和答题情况的输入和输出。

2.第五次题目集7-1首先根据题目要求创建好所有的类,再根据细节对类的属性和方法等进行补充。UML类图如下:

本题的重点在于通过读取控制设备的状态获得电路的总电压,再根据总电压求出各受控设备的亮度或速度。容易被忽略的是,本题中的控制设备——开关可以重复出现,而连续调速器和分档调速器最多只能出现其一并且不能同时出现,而且只能直接连VCC。假如电路中有连续调速器或者分档调速器,根据输入信息读取level,再计算出电路电压,最后判断开关是否全部打开;假如电路中既没有分档调速器,也没有连续调速器,只需要判断开关是否全部打开(如果电路中存在开关的话),若全部打开电压为220V,否则为0V。得到电路的总电压后就可以根据受控设备的条件求出相应的亮度(或转速)。

白炽灯求亮度的方法如下:                                                                              日光灯求亮度的方法如下:

             

吊扇求速度的方法如下:                                                                                  根据分档调速器获取电压的方法如下:

                               

根据连续调速器获取电压的方法如下:                               根据开关获取电压的方法如下:

                                               

将输入的信息读取后放在ArrayList里面,方便操作。

题目啰里啰唆说了一大堆,其中最主要的信息就在上面,将这些信息提取出来之后,思路就会变得比较清晰,代码写起来就比较流畅。

3.第六次题目集7-1在第五次的基础上增加了一些要求。UML类图如下:

增加了并联电路,要考虑受控设备的电阻,让电路变得更加复杂,所要考虑的东西也更多了。

以串联电路类为主体,从单个的串联电路开始分析。

该方法读取一条串联电路中的所有电路设备,放在ArrayList数组里,同时得到设备的名字。

                                  

 

该方法用于判断一条串联电路是否处于通路状态(是返回true,否返回false)。                                              该方法用于返回处于通路状态下的一条串联电路上所有受控设备的总电阻。

大概的思路如下:

  • 读取输入信息,根据输入信息创建相应的串联电路类和并联电路类对象
  • 读取输入信息中所有开关的操作情况 
  • 根据所有控制设备的状态求出主电路的电压
  • 求出各并联电路的电阻进而求出整个电路(主电路)的总电阻
  • 计算求出每个串联电路(除主电路外)的分压
  • 根据受控设备的分压求出每个受控设备的亮度(或转速)
  • 根据题目要求排序输出所有电路设备的工作状态   

踩坑心得

主要说说第五、六次题目集踩的坑和犯的错。

  • 没有充分理解题目的意思,忽略了一些细节。比如,一开始做题时以为开关也只能出现一次,但是又没有发现是这个问题,所以不管怎么改还是这么多分,最后经过同学提醒后才醒悟过来没有考虑到这种情况,浪费了很多时间,追悔莫及。
  • 没有养成良好的编写代码的习惯。写代码时常常忽略用private将成员变量私有化,对有些Java知识点的概念比较模糊,还有很大的进步空间。
  • 写代码的时候容易写着写着脑子就乱了,逻辑混乱,需要多写多练多思考加强编程能力。
  • 写出来的代码比较冗长且可读性不是很强,还需要优化自己写的代码,让它变得更加简练高效并且逻辑清晰。
  • 在计算并联电路电阻的时候没有考虑到其分路电阻为零时的情况,造成求出来的并联电路电阻出错,无法得到正确答案。
  • 一开始没有考虑到并联电路的所有分路都不处于通路状态的情况,导致得到的总电压不为0。
  • 在面对难题的时候态度不够端正,觉得难和花时间就选择不去写,错过了前面几次可以让自己的编程能力获得进步的机会,在Java课程上的学习还是有些许懈怠。世上无难事,只要肯登攀,以后的题目不管难度怎样都要花时间去思考、去练习,这样才能取得进步。

总结

通过这三次题目集的磨练,我不仅巩固了Java基础语法,还应用了面向对象编程(OOP)的原则,如封装、继承和多态性,使我对Java的应用有了更广泛的了解。

通过家居强电电路模拟程序的开发,我学习到了如何用Java实现复杂逻辑的建模,以及如何将实际问题转化为程序可解决的方式。答题模拟程序的编写则加强了我对集合框架的使用,以及数据结构和算法的应用,提高了我的编程能力和代码效率。同时,对于String、ArrayList、HashMap等常用知识点也在多次运用中更加熟练,收获不少。

尽管在知识掌握上取得了一定的进步,但也存在一些不足之处。例如,对于复杂的电路模拟,我发现我的算法设计能力还有待提高,程序优化方面也缺乏经验;同时,在答题模拟程序中,我对于复杂问题的分析和解决能力还不够强,需要进一步加强算法和数据结构的学习,Java编程的能力还有很大的进步空间。

针对上述不足,我计划采取以下措施进行改进:

  1. 加强算法学习:通过学习计算机科学中的高级算法和数据结构,提高问题解决的效率和质量。

  2. 实践项目优化:通过性能分析和调优,提升程序运行效率,增强代码的可维护性和可扩展性。

  3. 学习设计模式:深入理解并实践常见的设计模式,提高软件设计的合理性和代码的复用性。

  4. 跨学科应用:由于家居强电电路涉及电子学知识,我需要补充相关领域的知识,以更好地理解和模拟电路的行为。

通过这三次题目集的训练,我不仅提升了自己的编程技能,还学会了如何将编程知识应用于实际问题解决中。接下来的重点是提高自己在算法设计、程序优化和跨学科应用方面的能力,以适应更复杂和挑战性的编程任务。

标签:总结,Java,答题,PTA,电路,信息,题目,输入
From: https://www.cnblogs.com/worldpeacecyzzl/p/18239191

相关文章

  • 第二阶段PTA总结
    前言本阶段面向对象程序设计又进行了三次PTA训练,第一次(总第四次)还是接续上轮训练的试卷判分系统的程序设计,后两次都是新的电路设计训练题目。相对来说,第二次电路设计的第一次练习最为简单,第一次和第三次相对复杂。在这个阶段,我已经适应了PTA训练的题量和训练模式,并且设计起来更加......
  • Java重要知识总结(一)
    Java语言的特点简单易学;面向对象(封装,继承,多态);平台无关性;支持多线程;可靠性;安全性;高效性编译与解释并存JVM-JDK-JRE区别JVM(JavaVirtualMachine),Java虚拟机是运行Java字节码的虚拟机。JDK(JavaDevelopmentKit),它是功能齐全的JavaSDK,是提供给开发者使用,能够创建和编译Jav......
  • PTA题目集4~6的总结
    前言[1]知识点:本次PTA主要是新增的知识点是类的继承和多态,第4次题目集是针对类的继承,第5,6次题目集是针对类的多态。[2]题量:第4次和第5次题目集都是三题,第6次题目集是一题,题量不是很大[3]难度:第4次题目集还是答题判题程序,难度还行,就是增加了选择题和填空题,我感觉难......
  • PTA训练集阶段总结blog
    目录PTA训练集总结blog1.前言2.设计与分析题目集一7.4答题判题程序四关于设计要求:UML类图及设计分析:部分源码:复杂度分析:题目集五7.1家具强电电路模拟系统—1关于设计要求:UML类图及设计分析:部分源码:复杂度分析:题目集六家居强电电路模拟程序-2关于设计要求:UML类图及设计分析:部......
  • 两次pta题目总结
    两次pta题目总结写在前面这两次pta是新题目,上次那个答题判题的没有继续迭代了,根据这两次题目我也学到了一些东西,主要是面向对象设计模式的运用,接口的使用,以及递归算法的使用等等第一题题目内容:智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设......
  • 南昌航空大学pta总结
    前言背景介绍:继上次PTA题目讲解完,本次博客会进行对后几次题目集的讲解说明和题后总结目的和目标:及时反馈学习成果,达到学由所会,及时吸收和深入学习的目的学习收益:通过后面几次的题目学习,使得我对java的语法代码以及运用熟练度有了极大的进步,同时也对学习代码语言有了一个更......
  • abc--cf训练日常总结
    ABC最近遇到好多思维和位运算的题目不会做,特地过来总结一些小小的知识点。思维题目https://atcoder.jp/contests/abc353/tasks/abc353_c这道题目要求我们计算连续的两个相邻的数组元素之和。我一开始用暴力,后面换了种错误的思路就wa了。其实这道题目是求和,然后找到和大于1e8......
  • 栈经典题目(C++)
    文章目录前言一、删除字符串中的所有相邻重复项1.题目解析2.算法原理3.代码编写二、基本计算器II1.题目解析2.算法原理3.代码编写三、字符串解码1.题目解析2.算法原理3.代码编写四、验证栈序列1.题目解析2.算法原理3.代码编写总结前言一、删除字符串中的所有......
  • 题目集4-6的总结性Blog
    一,前言一-1.第四次题集是接着前面的第三次题集的迭代,知识点主要是继承的运用,正则表达式的运用同样少不了,相对于前面一次添加了对选题以及填空题,难度也相对于前一次加大。一-2.第五次题集是新的题集迭代是有关电路的,知识点有抽象类,抽象方法的使用以及继承的使用,同样正则表达式;由......
  • 【机器学习基础】Python编程07:五个实用练习题的解析与总结
    Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面:简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些库提供了......