首页 > 编程语言 >java题目集1~3总结blog

java题目集1~3总结blog

时间:2023-10-07 22:44:56浏览次数:47  
标签:题目 复杂度 学生 blog java 成绩 输入

(1)前言:
  前三次作业共计十八道题目,其中包含的知识点主要有包括:计算方面有单位换算,奇偶判断,浮点数相等判断等,其中的判断三角形类型和房产税计算十分具有代表性。数组方面有数组存储和遍历,查找重复数据等,其中对重复数据的查找与清除的两道题目对代码时间复杂度有一定的要求。面向对象方面有定义类,封装属性和方,关联类等,其中封装学生数据和菜品计算两道都有对其针对性的考察。算法类有如巴比伦法求平方根的公式类,也有如二进制转换,日期计算等由库内自带的函数进行加工处理的算法,通过该类算法能够使得部分工作比如计算两个日期的相差天数或是其他特殊工作方便许多。三次作业中的大部分题目难度较低,求解耗时较少,其余部分题目对知识点的考察鲜明直接,方便我们学习并熟悉基本编程技巧,其中涉及到对对象的封装和关联类的设计的题目,具有一定的挑战性,耗时较长。
(2)设计与分析:

  成绩计算类这段代码的时间复杂度大体上是O(n)的时间复杂度,其中n为学生的数量。在程序中,定义了一个Student类来存储每个学生的信息,包括学号、姓名、语文、数学、物理成绩以及总分和平均分。并且在类中定义了计算总分和平均分的方法,通过对象.方法名的方式进行调用。在主函数中,使用Scanner类和BufferedReader类从用户的输入流中读取学生的信息,依次调用Student类的方法计算每个学生的总分和平均分,并打印输出。该题目是第一道关于类与数组的运用题,题目较为简单,适合让我们学习将学生信息封装在Student类中的方法,也 使程序结构更加清晰易懂。

 

   第二道成绩计算类的题目难度略微有所提升,输入数据量有所提升 首先,定义了两个类:Score(成绩)和Student(学生)。Score类用于计算每个科目的得分和平均分,Student类用于存储学生的个人信息和各科目的成绩。程序通过Scanner类从用户输入中获取学生的信息和成绩,并进行相应的计算和存储。

输入阶段:使用while循环实现对学生信息和成绩的输入,循环次数取决于输入的次数。在每次循环中,执行了一些基本的赋值操作,时间复杂度为O(1)。因此,输入阶段的时间复杂度为O(n),其中n为输入的次数。
计算阶段:在每次循环中,调用Score类的方法进行计算,时间复杂度为O(1)。因此,计算阶段的时间复杂度也为O(n)。
输出阶段:使用for循环遍历学生对象数组,并输出结果。循环次数固定为3次,时间复杂度为O(1)。
因此,整个程序的时间复杂度为O(n)。该程序使用了面向对象的设计思想,通过定义类和方法来实现不同的功能,并使用循环结构和数组来处理多个学生的信息。在计算和存储方面较为简单,适合小规模的数据计算和管理。程序的时间复杂度较低,效率较高。

  对于菜单计价程序,解题代码的复杂度比较低,大体上是O(n)的时间复杂度,其中n为输入的菜品数量。在程序中,共定义了四个类:Dish、Menu、Record和Order,分别表示菜品、菜单、订单上记录和订单。这些类的属性和方法都比较简单,因此这段代码的整体逻辑清晰,易于理解和调试。在程序的主函数中,使用了Scanner类从用户的输入读取菜品信息,依次调用Order类的getTotalPrice方法结合Dish中存储的菜品价格计算所点菜品的价格最后得到订单总价。通过将不同的功能分别封装在不同的类中,使得程序结构更加清晰,并且易于扩展和维护。

 

  对于课程成绩统计程序,该题解主要包含了Course、Score和Student三个类。通过输入不同的指令来实现对学生成绩的录入和查询。
首先,代码中定义了Course类,其中使用一个成绩对象Score和一个学生数组stu用以存储学生数据,以及一些相关的方法。Score类表示成绩信息,包括平时成绩、期末成绩和总成绩,还有一个计算总成绩的方法。Student类表示学生信息,包括姓名、学号等。Course类中定义了一些方法,用于查找课程、录入学生信息等操作。
代码中的Match方法用于解析输入的字符串,判断其属于哪一类指令(课程输入、考察成绩或考试成绩),并进行相应的处理。通过使用正则表达式进行匹配,提取出关键信息,然后调用Course类的方法进行处理。
在主函数中,通过循环不断读取用户输入,并调用Match方法进行处理。最后输出学生成绩信息。
代码的时间复杂度主要集中在Match方法和主函数中的循环。Match方法中使用了正则表达式进行匹配,在最坏情况下可能需要遍历整个字符串,所以时间复杂度为O(n),其中n为字符串的长度。主函数中的循环会根据输入的指令次数进行迭代,所以循环的次数为O(m),其中m为指令的个数。总体来说,代码的时间复杂度为O(n*m)。
在使用正则表达式时,要注意其匹配规则的准确性和兼容性,以及对不同情况的处理。此外,在处理数据时要考虑到各种异常情况,比如输入格式错误等,进行相应的处理和提示。在对题解的编写中,我对数据的分辨排序以及各类非法输入的判别实在束手无策,最后完成了数据的输入以及存储,而难以写出如何判断输出的方法。

 

(3)踩坑心得:在解题过程中应该注意题目细节,不要因为没看到题目要求而增加无故的工作量甚至白忙活一场。
而在对较难题目的代码编写过程中则是时常出编译错误:
Exception in thread "main"java.lang.IndexOutOfBoundsException: No group 1 at
java.base/java.util.regex.Matcher.group(Matcher.java:646) at Main.Match(Main.java:159) at Main.main(Main.java:225),是在使用 matcher.group(1) 时没有匹配到任何内容导致无法获取第一个捕获组。这是因为我输入的字符串匹配的是整个符合标准的字符串,如果要从中录入数据的话需要对各个数据新建相应的正则表达式以完全录入所需数据。

Exception in thread "main" java.lang.NullPointerException: Cannot load from object array because "cou.stu" is null at Main.Match(Main.java:178) at Main.main(Main.java:278):在main函数中对类的声明后没有初始化便开始调用,使得指针尝试将值存储到一个空对象数组时出错,为了避免此类情况的发生,对于对象类数组的调用一定要先确保其已经被正确初始化并分配了足够的空间。


(4)主要困难以及改进建议:对于类的创建以及调用需要时间摸索熟悉,对输入数据的处理与判别尤其需要细心并且细致讨论各类情况,防止非法输入导致程序无法正常运行。

(5)总结:关于此次解题经验,我总结了部分要点:

1.明确题目要求与意义:根据题目说明和所提供的示例输入输出等辅助信息理解题目要求与目的。

2.理清思路再写题目:在理解了题意后,先理清题目的解题思路,避免在编写过程中出现混乱或错误,使得写好的代码要推倒重做。

3.考虑边界条件和异常情况:在编写题目时要考虑到各种可能的输入情况,包括边界值和异常情况,以保证代码的稳定性。

4.不断学习更新知识:题目的编写过程也是对自己知识的回顾和巩固,通过编写题目可以不断学习并更新自己的知识体系,只有这样才能适应多变的题型。

总的来说,这次写题目对我来说是一次很有收获的经历。通过这次写题目,我锻炼了自己的问题设计和解决能力,并提高了对编程知识的理解和应用能力。希望在以后的学习和实践中能够继续加油,不断提升自己的技术水平。

标签:题目,复杂度,学生,blog,java,成绩,输入
From: https://www.cnblogs.com/21207312blog/p/17747665.html

相关文章

  • java题目编写及分析
    首先想分享给大家的是三个题目集,其难易程度是由易到难(我会着重挑几个题目给大家分析)  第一个题目集所包含的题目为身体质量指数BMI测算,长度质量单位换算,奇数求和,房产税费计算,游戏角色选择,学号识别,巴比伦法求平方根近似值,二进制数值提取,判断三角形类型共九个题目,在第一个题目......
  • Java题目集第一次总结
    前言此Blog是对Java的PTA作业的总结,旨在分析和总结所做过的Java题目,以加深对Java的理解和加强对Java的运用。前三次PTA中涉及到了类和数组的基本运用,字符串的操作,数据的封装,日期类的方法的基本运用等知识点。第一次作业题量适中,难度也适中;第二次作业题量偏多,难度偏大;第三次作......
  • 题目集1-3总结Blog
    一、前言    第一次作业: 身体质量指数(BMI)测算   长度质量计量单位换算   NCHU_奇数求和  NCHU_房产税费计算  游戏角色选择  NCHU_学号识别   NCHU_巴比伦法求平方根近似值  二进制数值提取   判断三角形类型。这次作业是第一次接触Java题目,难度不......
  • 学妹学Java(2)
    ⭐简单说两句⭐作者:后端小知识CSDN个人主页:后端小知识......
  • 前三次Java题目集总结
    前言既然老师发布了作业做一次Java题目集总结并发Blog,那我就说说我的感受吧。关于第一次题目集给我的感觉似曾相识。回想这几年学过的编程语言,我知道了是什么感觉了。是写C语言pta作业的感觉,,,尤其是在我室友用C写出一道题目之后,这种感觉就更强烈了。。。直到第二次第三次习题集发......
  • java pta1-3总结
    前言第一次题目集知识点:基础知识点,主要包括算术运算、条件语句、循环语句、字符串操作等。题量:较多,9道题目。难度:较低,适合初学者练习。第二次题目集知识点:进阶知识点,主要包括数组、函数、类、异常处理等。题量:较多,8道题目。难度:中等,对于有一定基础的学生来说比较有挑战性。......
  • 题目集1~3的总结性Blog
    前言:到目前为止,本人已经完成了三次Java编程习题作业,逐步掌握Java语言的各种特性和用法。在三次题目集中,我学习了Java编程语言的各种知识点,包括条件语句、循环结构、数组、字符串处理、面向对象编程等。总体来说,题目集分为基础、进阶和高级部分,难度逐步增加,涵盖了Java编程的各个方......
  • 题目集1-3的总结Blog
    一、前言在近来的三次实验中,学习到的知识自然不容多疑,但同样的,遇到的困难也一点点的呈现了。知识点包括如下:1、创建类,在三个题目中,里面最多使用的就是我们最近强调的使用类,类对象封装数据。2、类型定义:类和对象、属性和方法等的定义。题量比较大的,对于初学的我们而言要一个个......
  • 21207328-吴义隆-blog1
    一、前言:三次pta题目集知识点丰富,包括了一开始如何创建Java基本形式,接着相关的命名及其使用,以及后面的知识结合。并且三次题目集的题量还算中规中矩,一开始,较为基础,题目多一点,方便学生进行学习和理解;接着进阶一点,难度提升的同时,适当减少了习题量;到最后,基本上题目以第二题的课......
  • 基于Java的大学生线上心理咨询系统(亮点:在线预约、在线咨询、留言回复)
    (大学生线上心理咨询室系统)三、开发环境与技术3.1MySQL数据库本课题研究研发的应用程序在数据操作过程中是难以预测的,而且常常产生变化。没有办法直接从word里写数据,这不但不安全,并且难以实现应用程序的功能。想要实现运用所需要的数据存放功能,就必定要选择专业的数据库存储软......