首页 > 其他分享 >第一次Blog

第一次Blog

时间:2024-04-21 21:59:23浏览次数:16  
标签:输出 题目 构造方法 代码 练习 第一次 Blog 输入

前言:
个人感觉
第一次练习主要是类的构建和相互运用的基础练习,像是第一题便是从风扇类的构建入手,然后逐渐添加对类的运用和类之间关联的需求,最后一题除了是这些需求的结合版以外,还是接下来两次练习最后一题的基底

第二次练习在第一次练习的基础上不仅增加了类与类之间关系掌握和运用的难度,像是7-3一题以提前给出一些代码并要求在此基础之上进行对题目需求的完成,还考验对他人代码的可读能力,最后一题则是在前次练习的基础上增加功能,有点像工作时甲方突然增加需求的感觉(_)

第三次练习有点第二次练习加强版的感觉,像是7-1像是前面考验对他人代码的可读能力的题目的加强版,7-2则是对类的构建和相互运用的加强版,最后一题也是在前面题目的基础上增加功能

整体题量虽然减少,但每题的难度是不断增加的
设计与分析:

相比后两次练习的,这题较简单,因为该题提前给了题目的数量,之前也没想那么多,所以创建了题目类和答案类之后分别把问题和答案分别提取,最后再进行对比输出就提交上去了

因为该题输入格式与第一次练习的不同,所以输入方法改为以输入不为end为条件的循环来进行数据的总录入,再通过输入字符串的第一个字符来判断信息录入哪一种类

这里比较注意的应该是输入.hasNext()的使用,前面因为在录入信息时没增加该条件时不时蹦出来错误提示

因为输出警告的信息要求第一输出,所以试卷类增添了警告输出的功能并先行输出,之后再通过从试卷上提取的题号所对应的题目和对应的输入的答案来输出要求的题目部分,再对比提取出的题目的答案和对应的输入的答案来完成最后对答案正确与否的判定,再通过其判定来决定总分的加与否和最后输出的内容

对我来说这里比较要命的是这一大串内容都放在一个类的构造方法里面去做,导致代码太长,可读性很差


与之前的练习不同,该题增加了学号和对应学生姓名的输入,所以我在代码中新增加了学生类来保存学生信息,并在该类里增加了以对应学号输出对应姓名的构造方法public String S(String num),除此之外,因为该题答案的输入格式与之前题目的输入格式不同,所以通过修改输入方法增加了对学号的输入好在最后添加对应学号的学生姓名的数据

这里我之前为了检验时输出好看在录入答案信息时用'\n'来隔开每个单独的数据,结果在添加功能时不知为何有时取出对应序号的.substring(序号1,序号2)时会出错,最后是通过录入时把'\n'去掉,换成其他分隔用的符号来解决的

除了学号和学生姓名,该题还要求添加题目的删除功能,于是我在代码中新增加了删除类来保存删除的题目信息,在对答案的最终判定前,先对题目是否删除进行判定,再决定输出的内容和最后得分的多少,除了对题目是否删除的判定,应题目要求,我还增加了对题目是否有误的判定来决定最后得分的多少和输出的内容,来达成输出的正确

这里因为要求对有误的题目进行优先级最大的输出,所以在题目录入里增加了对题目是否有误的判断和对应的输出有误的是否,以此来在输出对试卷是否达到一百分的判定前输出

踩坑心得:

最主要也是最大的坑还得是最后一题(.~.)

同样是增加需求,第二次增加需求比第一次难了许多

一是第一次增加时主要的判断和输出都在一个类的构造方法中,第二次增加需求时看了好久,最后还得删掉大部分来达成需求

二是我个人的代码在对输入进行录入和统计时把数据提取后重新构建了一番,导致在判断错误格式输入时难下手(最后也有好几题不知为啥过不了)

在BUG方面
对我个人来说大多是因为没考虑到变量的全局变化或变量的数据类型

其他包括但不限于

1.比较字符串和某字符串.substring(j,i)时用==不行,而用equals可行

2.循环时没把控住变量的变化导致错误或无限循环

3.字符串.substring(j,i)调用失误导致Integer.valueOf失败

4.在测试整体输出时添加了几个System.out.println(),回头要删除时找不到在哪

改进建议:

第三次练习的7-3和第二次练习的7-4

这两次练习都有个严重的错误---主要的判断和输出都在一个类的构造方法中,第二次练习的7-4主要是没考虑到将来代码修改的可能,导致代码杂合在了一起,虽然第三次练习的7-3我也尽量修改了,但由于时间不够以及还在纠结着还没通过的测试点,最后还是把大多数判断和输出都放在一个类的构造方法里了。

修改上可以把一些该构造方法里判定的原数据通过原类的构造方法来进行提取,这样可以减少对原数据提取所需求的代码数量来减少该构造方法里代码的复杂度,以此来增加代码的可读性

除此之外,也因为主要的判断和输出都在一个类的构造方法中,这就导致在构建构造方法构建间隔较大时不知道什么时候什么变量是什么值,最后只好新建变量,结果变量越建越多,不知道该不该动的变量也越来越多,这也是该代码如此复杂,构建时如此耗时的主要原因之一,

修改上一是可以把一些变量改为较为明显的名称,像是text_num,score_num之类可英译的变量,避免i,j等不知何时何地使用的变量
二是可以在使用变量时在该段末尾加上//注释,方便了解变量的使用方法和该变量使用的意义

第三次练习的7-2

由于输入的形式是数字-数字-数字的形式,在录入时采取的是输入字符串的形式,后面再用Integer.valueOf来进行数字上的计算,但Integer.valueOf套用太多(尤其是和字符串.substring(j,i)一起套用时)会造成代码冗长

修改上可以把对应的数字用Integer.valueOf通过新建变量并赋值的方式提取出来,这样套用时方便又简洁

总结:

在作业的题目上,个人感觉难点的题目如果样例给较全点较好,第三次练习的最后一题凡是跟错误格式输入有关的都没通过,把样例的数据都代进去也都可以过,也试了其他几个我能想到的错误格式,但最后也还是没查出来到底哪里出错了

这三次练习难度循序渐进,个人感觉蛮有锻炼价值的,无论是面向对象的方面还是对java的类的使用方面,尤其是最后一题,后两次练习的最后一题都是建立在前一次练习的最后一题的基础上的,锻炼的不仅是对原来代码的修改,还有的是为将来代码修改的可能对代码可读性和可添加功能性的精进和专研

个人感想:

在后面的作业中,为了能尽量避免错误的发生,再加上时间有点紧张并还要对测试点不通过地方进行修改,我避免了正则表达式,继承等我不怎么熟悉的方式来完成作业,这是不应该的,学习未知的知识是课程的目的之一,在今后的作业中我会尽量努力使用不熟的方式来完成作业。

这三次练习并不是全部,java的学习才刚刚开始,不止是类的定义、对象的创建。封装,继承,多态,子类,父类。。。。。。

还有许多或大或小的未知等着我去探索,今后我依然会努力学习java,充满对新知识的渴望

标签:输出,题目,构造方法,代码,练习,第一次,Blog,输入
From: https://www.cnblogs.com/htzero/p/18142534

相关文章

  • 第一次Blog
    (1)前言:面向对象程序设计(java)是一种区别于c语言的设计语言,其最大的区别便是c语言为面向过程,逻辑为线性逻辑,而java将所要进行的操作分散到各个类当中去,分别完成某项任务,直观的讲便是,c语言是一条简单的流水线,这条流水线上便可完成所有内容,故为线性逻辑,而java则是一座大型工厂,里面有不......
  • OOP课程第一次vlog-23201914-钱文浩
    一、前言1.知识点:第一次题目初步考察了正则表达式,其中包括正则表达式的判断(matches函数)和分割(split函数)。初步考察了类与对象的设计,比如实体类(试卷类,题目类等)、控制类(改卷类等),考查学生对实际问题的需求提取与分析。第二次题目进一步加强对上述各方面内容的考察。而且因为题目加......
  • 23201228-第一次Blog
    一、前言:从大一下学期开始学习java到现在,已经完成了三次PTA用java实现的大作业,三次PTA作业的难度在逐渐增大,每次最后一题都是从第一次PTA大作业里迭代而来,难度很大且每次提升,涉及的内容有很多,比如类,方法,Arraylist等,但最主要的还是类的设计,通过这三次作业,很深刻的认识的了设计对于......
  • 南昌空大学第一次PTA小结blog
    不相同与上学期的C语言,java在面向对象与面向过程,安全性与垃圾回收,跨平台性,速度与效率,应用领域,语法特性等方面存在显著的差异,而且java也是我们软件工程以后所使用的基础,接下来我分享第一次作业的总结。本次作业分为以下部分:(1)总结三次题目集的知识点、题量、难度等情况。(2)设计与......
  • OOP第一次Blog
    本次Blog总结前三次作业的心得和体会**前言:前三次PTA作业整体难度不算很大,题量也一般,但是运用的知识点还是挺多挺杂的。第一次:没用到什么繁琐的知识点,初步见识到类之间的关联性和耦合性,难度不大,但是比较考验耐性。第二次:开始接触接口,用接口辅助排序,最后一道题在第一次的基础上......
  • blog1 1--3周PTA训练总结
    一.前言:在学习过C语言之后,面向对象的程序设计在本学期如期开启。该课程的编程语言是java,java与所学过的C语言有诸多相似之处,与C语言课程所不同的是,这门课程注重的是面向对象,如果说C语言是语法的学习,那么java就是其实战应用的学习,这门课的学习更让我深刻的感受到比写代码更重要的......
  • 数据库原理第一次实验报告
    目录任务一:(数据库CAP)12345任务二:(数据库GlobalToyz)1234567891011121314151617181920写在最后数据库原理第一次实验报告任务一:(数据库CAP)1创建数据库CAP,包含4张表Customers、Products、Agents和Orders。UseMaster;CREATEDatabaseCAP;UseCAP;CREATETABLECUSTOMERS(......
  • 南昌航空大学软件学院23201823第一次blog
    一、前言:关于这三次的PTA大作业,我认为题目难度是超出了我的现象的,特别是每次的压轴迭代题,这压轴三道题全是迭代而来,息息相关,这也就意味着你如果第一次的设计没有做好,框架出现问题,后续改进的时候就只会越来越吃力甚至是需要把整个架构都推倒重来。最后一道题目的知识点包含也非常......
  • JAVA第一次博客
    目录:一.前言二.设计与分析三.踩坑心得四.改进建议五.总结一.前言:一开始接触的就是C语言,而后是Java。两者有相通的也有不同的,C语言面向过程,而JAVA则是面向对象。感觉JAVA的面向对象和struct有点像。第一次作业偏简单,重点在与正则表达式;第二次作业输出的形式更复杂了;第三次作业增......
  • 第一次blog
    前言:本学期我开始了Java的学习之旅,从类的学习,输入与输出,到集合与哈希表。下面是一个从类的学习开始的Java学习总结:类与对象:类是Java中的基本构建模块,它定义了对象的属性和行为。对象是类的实例,具体化了类的属性和行为。类的结构:类由类名、属性(成员变量)和方法(成员函数)组成。......