首页 > 其他分享 >Blog_2

Blog_2

时间:2024-06-09 23:32:54浏览次数:13  
标签:group 作业 else Blog parseInt Integer line

前言

  • 知识点

    1.前三次大作业之后,学习到继承这一特征,第四次大作业开始使用继承了,但基础的数据存储结构我使用的还是HashMap,这个还是使用得比较得心应手。这道题中正则表达式的使用是最多的,因为有错误匹配以及多种信息提取的需要。

    2.第五次大作业除继承外,还使用了多态这一特征。这题要求的实现不是很困难,因此代码没设计很复杂的结构,数据存储很简单,不用进行错误输入判断,也只用了简单的正则表达式。

    3.这道题涉及的知识点其实仍是之前的继承、多态、正则表达式、HashMap、ArrayList等,但继承、多态的使用更有分量,如果说第五次只是简单几个,这次就更多结合题目设计,更为规范。

  • 题量

    第四次大作业和第五次大作业都是一道较难题+两道简单题的配置,第六次大作业只有一道困难题,这三次总体花费时间是差不多的,简单题不用花费什么时间,主要还是程序题花的时间多。

  • 难度

    1.在我看来,第四次大作业的总体难度要低于第三次大作业,虽然第四次大作业迭代在第三次的基础上添加了多选题和填空题,但每种题型相应的测试点也减少了,因此我第三次大作业没能AC,而第四次大作业AC了。

    2.第五次大作业因为是一次全新的迭代,题目也因此较为简单,因为限制条件不多,只是简单的一条无电阻的串联电路,所以我设置的不是很规范就AC了。

    3.第六次大作业的难度在于并联电路的添加,需要根据各元件电阻计算各元件分得电压,也因为我第五次大
    作业纯图省事,有很多不适用于此次大作业的设计,几乎相当于重写了。

设计与分析

踩坑心得

  • 第四次大作业

    做第四次大作业迭代时才发现一个第三次大作业中很大的bug,就是只对应给出的测试样例中的错误输入做了错误输入判断。
    以下是我第三次大作业中的输入操作
点击查看代码
if(mat.find())//题目信息
{
    Qcount = Integer.parseInt(mat.group(1));
    Question Qclass = new Question(mat.group(2),mat.group(3));
    q.put(Qcount, Qclass);
}
else if(line.startsWith("#T:"))//试卷信息
{
    Pcount++;
    if(mat1.find())
    Pnum = Integer.parseInt(mat1.group(1));
    Paper Pclass = new Paper(Pnum);
    // 匹配题目编号和分值
    while (mat3.find()) {
        Qisexit = true;
        Tcount++;
        Tnum = Integer.parseInt(mat3.group(1));
        if(q.get(Tnum)==null)
            Qisexit = false;
        Pclass.add(Tnum,Integer.parseInt(mat3.group(2)),Qisexit,Tcount);
    }
    p.put(Pcount, Pclass);
}
else if(line.startsWith("#S:"))//答卷信息
{
    Sisexit = true;
    Pisexit = true;
    Acount++;
    if(mat2.find())
    {
        Anum = Integer.parseInt(mat2.group(1));
        sid = Integer.parseInt(mat2.group(2));
    }
    if(p.get(Anum)==null)
        Pisexit = false;
    if(s.get(sid)==null)
    {
        Sisexit = false;
    }
    Answer Aclass = new Answer(Anum,mat2.group(2),Pisexit,Sisexit);
    while(mat6.find())
    {
        Dcount++;
        Aclass.add(Integer.parseInt(mat6.group(1)),"");
    }
    while (mat3.find()) 
    {
        Dcount++;
        Aclass.add(Integer.parseInt(mat3.group(1)),mat3.group(2));
    }
    a.put(Acount, Aclass);
}
else if(line.startsWith("#X:"))//学生信息
{
    while(mat4.find())
    {
        Snum = Integer.parseInt(mat4.group(1));
        Student Sclass = new Student(mat4.group(2));
        s.put(Snum, Sclass);
    }
}
else if(mat5.find())
{
    q.get(2).Delete();
}
else
    System.out.println("wrong format:"+line);
line = in.nextLine();

这是第四次改进后的

if(matN.matches())//答案唯一题
    isNQuestion(line,patN);
else if(matZ.matches())//多选题
    isZQuestion(line,patZ);
else if(matK.matches())//模糊选项题
    isKQuestion(line,patK);
else if(matT.matches())//试卷信息
    isPaper(line,patT,patF);
else if(matS.matches())//答卷信息
    isAnswer(line,patS,patA,patF);
else if(matX.matches())//学生信息
    isStudent(line,patXF);
else if(matND.matches())//删除
    isDelete(line,patND);
else
    System.out.println("wrong format:"+line);

可以看出,第四次相比之下,不仅if-else内的操作减少了,也避免了我第三次中忽略了错误输入,使用了startsWith()函数而不是与正则表达式匹配的情况。

  • 第五次大作业

  1. 没能仔细看清题目要求,题目中要求以浮点数计算后仅保留整数部分,我一开始时使用的是String.format(),这是四舍五入保留整数的函数,后来改成了(int)强制转换,计算更加精确了。
  2. 没考虑到只有单个电器的情况,而是后续检测到有开关且都闭合的情况下才使电路闭合可流通,后面改成了一开始就可以闭合除非检测到开关断开的情况就改电路断开。
  • 第六次大作业

  1. 第一次提交只有6分,也就是只过了题目给出的三个测试点,后面发现是忘记加新迭代的落地扇。加上之后就到了57分。
  2. 后面找了室友一起找bug,发现一种开关情况判断有问题,改完这一个后就到94分。
  3. 最后的两个测试点还是和室友一起找出来的,发现是一个浮点数计算上的问题,改完就AC了。

改进建议

代码设计可以更贴切单一职责、开闭原则。

总结

  • 收获

    1.对继承和多态的运用更加熟练了
    2.学会了多种对字符串的操作
    3.对单一职责的了解更加深入,使用更加灵活。
    4.设计思路得到提升,对类的分工更为明确。
  • 意见

标签:group,作业,else,Blog,parseInt,Integer,line
From: https://www.cnblogs.com/jy2007shun/p/18240247

相关文章

  • 23201826-熊锋-第二次blog
    一.前言这三次pta作业第一次为答题判断程序-4,这是答题判断程序的第三次迭代,相较于答题判断三,新增了各种题型及其不同种类的答案,并且出现多选题,使得这次题目相当棘手,具有很大的挑战性。第二次为家居强电电路模拟程序-1,这次是新题型,这道题难点在于电器之间的连接,电路是否为通路,电器......
  • 第二次Blog
    一,前言题目集4`6,正则表达式,类型转换,字符串处理,链表,以及例如Arraylist等包的知识,需要合理运用继承多态来设计类,需要对题目的逻辑过程,具体实现有充分的认知.题量适中,难度较大,在写代码之前要对实现的过程,思路充分完善,才利用代码的完成.2,设计与分析第四次题目集7-1......
  • 23201115-邓俊豪-第二次blog
    目录blog2前言关于难度和题目量关于知识点设计与分析pta4一、项目简介二、项目实现三、项目测试四、代码示例五、总结六、代码分析pta-5一、项目简介二、项目实现三、项目测试四、代码示例五、总结六、代码分析pta-6一、项目简介二、项目实现三、项目测试四、代码示例五、总结六、......
  • 第二次blog
    一:前言第五次作业明显比之前的难了许多,大作业是模拟家居强电电路模拟程序,本次题目集只考虑了电路只为串联的情况,但是有多个开关接入电路,同时也有电压调节器。这次作业需要我们对电器实现继承关系,即所有的用电器都需要继承与电器这个父类。所给题目设计建议:1、电路设备类:描述所......
  • 第二次Blog
    引言第4次大作业第4次大作业相比前两次迭代,增加了多选题与填空题的判断,随着内容的增多,更看重代码的维护难易程度,因为前面某些测试点未通过,导致我多次尝试仍有二到三个测试点无法通过,因为代码量过大与设计的原因,导致我的代码维护难度过大,如问题类与题目类中某些方法的混淆使我的......
  • 第二次blog
    前言这三次pta大作业是我对java程序进行进一步的系统的训练。对我而言,在构建类图和考虑类与类之间的关系时显得尤为吃力。在这三次的pta大作业中我不断强化和训练我对类图构建方面的能力,也对其有了自己的认识。与此同时,我发现java程序编程的极为重要的一点就是对整体的把握,老师十......
  • OOP第二次blog
    不知不觉过去了这么久,又经历了三轮的PTA作业,到了写blog小结的时间,接下来给大家分析的第二次的PTA作业。本次作业分为以下部分:(1)总结三次题目集的知识点、题量、难度等情况。(2)设计与分析:重点对题目的提交源码进行分析。(3)采坑心得:对源码的提交过程中出现的问题及心得进行总结。(4......
  • 4~6总结blog
    第四次:一.介绍:相比于前三次,这一次也有一定的迭代,但是仍然有五个测试点未通过,接下来重点展示二.类图:三.耦合度:在这个耦合度方面,Answer类的OCavg:4.36,Main类的OCavg:40.00Answer类的WMC:48,Main类的WMC:40在软件工程中,OCavg和WMC是两个与代码复杂性相关的度量指标。OCavg表示每......
  • 第二次Blog
    1.前言第四次作业是前三次大作业的迭代,添加了选择题,多选题,填空题。多选题,填空题可以有多个答案,并且可以对一半并得到分数。这对输入是个考验。同时对比较答案也是个难题。第五次作业是设计一个智能家居强电电路模拟系统,有受控设备和控制设备,不算太难。第六次作业是第五次作业迭代......
  • 第二次Blog
    题目集47-17-4答题判题程序-4分数87作者蔡轲单位南昌航空大学设计实现答题程序,模拟一个小型的测试,要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目信息中的标准答案判断答题的结果。本题在答题判题程序-3基础上新增的内容统一附加在输出格式......