首页 > 其他分享 >PTA题目集1~3的总结

PTA题目集1~3的总结

时间:2024-04-21 22:35:13浏览次数:53  
标签:总结 topic 题目 String int 试卷 PTA Topic

目录:
1)前言
2)设计与分析
3)踩坑心得
4)改进建议
5)总结

1.前言:
Java作为本学期的新学语言,难度相较于上学期的c语言有很大提升,由易到难的过程也更加考验我们的学习和理解能力。
前三次题目集重点考核类设计及类间关系设计,以及正则表达式的应用等。并且在每次题目集的题目数量不多的情况下,将分值大幅的放于最后一道题目,可见最后一题的重要性。三次题目集题数不多,基本在3-5题,难度普遍为前几道题较为简单,考察基本功,最后一题难度很高,对能力要求很大,且三次题目集的最后一题为迭代型,意味着从一开始就要打好基础,层层递进,一旦某一环节出了差错,就会导致后面的题目编写困难甚至无从下手。

2.设计与分析:

日期类的基本使用
给定一个日期,判定是否为合法日期。如果合法,判断该年是否闰年,该日期是当年第几天、当月第几天、当周第几天、。
给定起始日期与结束日期,判定日期是否合法且结束日期是否早于起始日期。如果均合法,输出结束日期与起始日期之间的相差的天数、月数、念书。

设计思路:
设计两个类,一个判断日期是否合法,一个计算天数

判断类:判定是否为合法日期。
boolean d
public static boolean panduan(int a,int b,int c){ boolean d=false; if(b==1||b==3||b==5||b==7||b==8||b==10||b==12){ if(c<=31){ d=true; } else{ d=false; } } else if(b<1||a>12){ d=false; } else if(b==2){ if(a%400==0||(a%4==0&&a%100!=0)){ if(c>29){ d=false; } else{ d=true; } } else{ if(c>28){ d=false; } else{ d=true; } } } else{ if(c>30){ d=false; } else{ d=true; } } return d; }
计算类:
String regex
DateFormat formatter
public static boolean validdate(String dt,String format){ if(dt==null||dt.isEmpty()||format==null||format.isEmpty()){ return false; } if(format.replaceAll("'.+?'","").indexOf("Y")<0){ format+="/YYYY"; DateFormat formatter = new SimpleDateFormat("/YYYY"); dt+=formatter.format(new Date()); } String regex = "^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$"; if(!dt.matches(regex)){ return false; } DateFormat formatter = new SimpleDateFormat(format); formatter.setLenient(false); ParsePosition pos = new ParsePosition(0); Date date = formatter.parse(dt,pos); if(dt==null||pos.getErrorIndex()>0){ return false; } if(pos.getIndex()!=dt.length()){ return false; } if(formatter.getCalendar().get(Calendar.YEAR)>9999){ return false; } return true; }

设计实现答题程序,模拟一个小型的测试,要求输入题目信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。

设计思路:
设计三个类,分别为题目类,试卷类,答卷类。

题目类(Topic):用于保存一道题目的信息以及处理的方法。
private int number;// 题号
private String question, // 题目内容
private String answer;// 标准答案
static class Topic{ private int number; private String question; private String answer; int getNumber(){ return number; } void setNumber(){ this.number=number; } String getQuestion(){ return question; } void setQuestion(){ this.question=question; } String getAnswer(){ return answer; } void setAnswer(){ this.answer=answer; } Topic(){ this.number=number; this.question=question; this.answer=answer; } }
试卷类(Paper):保存和处理一张试卷的信息
Topic[] topic;//题目清单
static class Paper{ Topic[] topic = new Topic[3]; void timu(int a){ topic = new Topic[a]; } }
答卷类( Answer):保存和处理一张答卷的信息以及处理的方法
Paper paper;//试卷
String[] answers;//每一题的答案信息
boolean[] judgment;//每一题的判题结果
static class Answer{ Paper paper; String[] answer; boolean[] judgment; void shijuan(int a){ answer = new String[a+1]; for(int i=0;i<=a;i++){ this.answer[i]=new String(); judgment = new boolean[a]; } }

设计实现答题程序,模拟一个小型的测试,以下粗体字显示的是在答题判题程序-1基础上增补或者修改的内容.要求输入题目信息、试卷信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。
程序输入信息分三种,三种信息可能会打乱顺序混合输入.
一行为一张试卷,可输入多行数据(多张卷)。
每组答案包含某个试卷信息中的题目的解题答案,答案的顺序与试卷信息中的题目顺序相对应。
答案数量可以不等于试卷信息中题目的数量,没有答案的题目计0分,多余的答案直接忽略
该部分仅当一张试卷的总分分值不等于100分时作提示之用,试卷依然属于正常试卷,可用于后面的答题。如果总分等于100分,该部分忽略,不输出。
如果输入的答案信息少于试卷的题目数量,答案的题目要输"answer is null"
是一条答题记录所对应试卷的每道小题的计分以及总分,计分输出的先后顺序与题目题号相对应。
根据输入的答卷的数量以上2、3项答卷信息与判分信息将重复输出。

设计思路:
设计五个类,在原来的基础上新增试卷题目类和答案类。
题目类:
static class Topic{ private int number; private String question; private String answer; Topic(){ this.number=number; this.question=question; this.answer=answer; } }
试卷类:
static class Paper{ Topic[] topic = new Topic[3]; void timu(int a){ topic = new Topic[a]; } }
答卷类( Answer):
static class Answer{ Paper paper; String[] answer; boolean[] judgment; void shijuan(int a){ answer = new String[a+1]; for(int i=0;i<=a;i++){ this.answer[i]=new String(); judgment = new boolean[a]; } }
试卷题目类(Topic_Paper)//用于保存试卷中的题目信息。因为试卷中的题目序号与题目本身的题号不一致,且题目在不同试卷中的分值可能不一样。
int TPnum;//试卷中题目的顺序号
Topic topic;//题目类的对象,保存题目信息
int topic_score;// 题目分值
public class Topic_Paper{ private int TPnum private int topic_score Topic[] topic=new topic[10]; String getTPnum(){ return TPnum; } void setTPnum(){ this.TPnum=TPnum; } int gettopic_score(){ return topic_score; } void settopic_score(){ this.topic_score=topic_score; } }

答案类(Rasult):用于保存答卷中一道答案的信息。
Topic_Paper question;
String result;

设计实现答题程序,模拟一个小型的测试,以下粗体字显示的是在答题判题程序-2基础上增补或者修改的内容。要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目信息中的标准答案判断答题的结果。
学生信息只输入一行,一行中包括所有学生的信息,每个学生的信息包括学号和姓名.
删除题目信息为独行输入,每一行为一条删除信息,多条删除信息可分多行输入。该信息用于删除一道题目信息,题目被删除之后,引用该题目的试卷依然有效,但被删除的题目将以0分计,同时在输出答案时,题目内容与答案改为一条失效提示。

设计思路:
设计六个类,在原来基础上新增学生类。
题目类:
static class Topic{ private int number; private String question; private String answer; Topic(){ this.number=number; this.question=question; this.answer=answer; } }
试卷类:
static class Paper{ Topic[] topic = new Topic[3]; void timu(int a){ topic = new Topic[a]; } }
答卷类( Answer)
static class Answer{ Paper paper; String[] answer; boolean[] judgment; void shijuan(int a){ answer = new String[a+1]; for(int i=0;i<=a;i++){ this.answer[i]=new String(); judgment = new boolean[a]; } }
试卷题目类(Topic_Paper)//用于保存试卷中的题目信息。因为试卷中的题目序号与题目本身的题号不一致,且题目在不同试卷中的分值可能不一样。
public class Topic_Paper{ private int TPnum private int topic_score Topic[] topic=new topic[10]; String getTPnum(){ return TPnum; } void setTPnum(){ this.TPnum=TPnum; } int gettopic_score(){ return topic_score; } void settopic_score(){ this.topic_score=topic_score; } }

答案类(Rasult):用于保存答卷中一道答案的信息。

学生类(Student):保存学生的信息
String studentID;
String name;
public class student{ private String studentID; private String name; String getStudentID(){ return studentID; } void setStudentID(){ this.studentID=studentID; }String getName(){ return name; } void setName(){ this.name=name; } }

踩坑心得:
.

.
在设计时没考虑将判断类与计算类结合起来,导致在计算时会误判输入日期的合法性,导致输出结果与案例不符合,且开始时没考虑将合法判断与闰年判断合并起来,导致代码繁杂,以至于后期修改时费力,需要大改动。
.


.
在做输入判断时没用从一开始就使用正则表达式,而是使用网上教程中的一些表达,导致读取输入数据时出现报错的情况,程序无法运行。且对于乱序输入概念不理解,导致程序出错。
.
改进意见:

不应该单纯的只建几个类来完成题目给定的功能,而是应该考虑题目所给的信息来设计,保证单一职责的同时便于修改和迭代。不应该投机取巧,直接使用println进行直接输出进行测试,应该脚踏实地认真修改和编写代码,提高自己的编程能力。
.
总结:
初次接触 Java ,有点感到语法和概念有些复杂,需要花费时间来理解和适应。深刻理解变量、数据类型、控制流等基础知识是后续学习的关键。在编程过程中难免会遇到错误,学会调试和解决问题是很重要的技能。理解类、对象、继承等面向对象的概念,对提高代码的可维护性和扩展性有很大帮助。
通过这三次的PTA作业,基本理解了正则表达式的使用,对于类与类之间的关系,java里的单一职责原则,开闭原则等有了初步了解。也感受到了Java语言的内涵和难度,很多问题需要花费大量的时间去解决,甚至解决不了,所以需要花费更多的时间去投入到Java的学习当中,努力提高自己的编程能力。

标签:总结,topic,题目,String,int,试卷,PTA,Topic
From: https://www.cnblogs.com/yyyk1/p/18149638

相关文章

  • 第一次题目总结
    前言:本次发布的题目集1-3,主要是对类和对象的使用的考察,题量比较适中,难度设置合理,如风扇类设计比较简单,整体就是为了熟悉类的使用,后续的题目加入了一些要求,加强对类和对象的熟悉,难点集中在每次的答题系统迭代上,非常考验类之间的关联使用。每次题目集都会有一些简单的基础题目来熟......
  • PTA题目集1~3的总结
    1.前言[1]知识点:这三次题目集是针对对象和类展开的,主要是String类和正则表达式的运用。要运用到String.split,String.substring等,和通过正则表达式来判断字符串是否符合格式和拆分字符串。[2]题量:这三次题目集的题量不算很大,每次的题量有所减少,但是题目难度有所提升,每题......
  • PTA前三次题目集总结
    一.前言三次PTA题目集过后,算是彻底打击了我的自信心,PTA内容不在只是简单的对语法问题的考察,真正的从“基础”转到“面向对象”,随之而来的是更多的代码量,及消耗我们更多的时间。要学习新的内容并投入实践,和更多代码量给我带来更多的报错问题和非零返回问题,无不在告诉我这次学习有......
  • OOP 1~3总结
    oop1~3总结前言知识点1.类的基本运用、类与对象的运用、类与数组的运用、关联类的使用2.接口的初步了解与运用3.日期类的使用这三次作业的最后一题涉及到的知识点比较多,综合性很强。宏观上重点考察的是我们对面向对象技术的整体把握,对程序设计原则的理解与使用,同时在细节......
  • 前三次PTA题目集总结
    1.前言:前三次作业主要都是写答题判断程序,由于这学期才接触java,所以一开始对于怎么写,以及java语法有点不太适应。后来学习到“类”这个强大的工具和正则表达式,但因为并不熟练,所以写起来十分艰难。这三次题目难度逐级提升,都在原本的基础上添加了新的内容与知识点。类和对象的使用,关......
  • opp1~3总结与反思
    23201927-杨民星-第一次博客第一次opp题集:题目数量:5题题目难度:中等偏难知识点:ArrayList变长数组,排序,正则表达式,单一职责原则等对于这次opp题集,我遇到了很多不同的情况,如下细说:第一、前几题其实都是比较简单的题目,就是让我们认......
  • RT-Thread 专栏总结
    1、对RTOS/RT-Thread优先级反转的理解参考链接1:https://blog.csdn.net/m0_74712453/article/details/134001652参考链接2:https://blog.csdn.net/weixin_45590051/article/details/118330634优先级反转是实时操作系统最常见的问题,解决办法是互斥量使用优先级继承方法。1......
  • 题目集1~3的总结
    一、前言一到三次题目集主要考察的知识点有类与对象的设计、类与方法的调用、数组、链表等;题量稍大,题目难度具有挑战性,需要经过认真的思考。二、设计与分析1、题目一:(1)题目:设计实现答题程序,模拟一个小型的测试,要求输入题目信息和答题信息,根据输入题目信息中的标准答案判断答......
  • OOP课第一阶段总结
    前三次OOP作业总结Blog前言作为第一次3+1的总结,这次题目集的难度逐渐升高,题量、阅读量和测试点的数量变化都很大,所以对我们的编程和理解能力提出了更高的要求。例如在第一次到第三次的题目集中,类的数量由三个增长到了十余个。投入的时间也由最开始的45个小时到了后来的1824......
  • PTA1-3总结w
    <1>前言:知识点:1.类的定义:代码中定义了三个类,Question、Answer和Paper,分别用来表示问题、答案和试卷。每个类都包含了相应的属性和方法。2.对象的创建:在main方法中通过new关键字创建了Question、Answer和Paper类的对象,然后对对象的属性进行赋值和操作。3.HashMap的使用:代码......