OO第一次博客作业
OO第一次博客作业
目录
1.前言
2.设计与分析
3.采坑心得
4.改进建议
5.总结
1.前言
正则表达式是java语言中一种非常重要的语言,他的重要性主要体现在以下方面:
1.高效的文本处理:正则表达式提供了一种高效的方式来处理文本数据。它可以快速地进行字符串的搜索、匹配、替换和分割等操作,这在处理大量数据时尤为有用。
2.强大的模式匹配能力:正则表达式能够根据定义的模式匹配几乎任何类型的字符串。这种灵活性使得它非常适合于验证输入数据格式,如邮箱地址、电话号码、日期等。
3.简化代码逻辑:使用正则表达式可以简化复杂的字符串处理逻辑,使代码更加简洁、可读性强,同时也更容易维护。
4.提高开发效率:通过正则表达式,开发者可以快速实现复杂的字符串操作,而不需要编写大量的条件判断和循环逻辑,从而大大提高开发效率。
5.灵活性和可扩展性:正则表达式具有很强的灵活性和可扩展性,可以根据需求轻松调整匹配模式,适应不同的应用场景。
6.跨平台和语言兼容性:虽然具体的语法可能略有差异,但正则表达式的核心概念在大多数编程语言中都是通用的。这意味着掌握了Java中的正则表达式,在其他语言中也能够快速上手和应用。
这三次pta作业,无一不体现出正则表达式对解决问题的便利。当然,要想做好这三次作业,需求与设计也是必不可少的。
2.设计与分析
1.第一次pta作业:
设计思路:设计试卷,答卷和题目三个类,并加一个测试类用来判断true和false。
代码:
class Paper{
private int num;
private String numbering;
private String question;
private String answer;
public Paper(){
}
public Paper(int num,String numbering,String question,String answer){**
this.num = num;
this.numbering = numbering;
this.question = question;
this.answer = answer;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getNumbering() {
return numbering;
}
public void setNumbering(String numbering) {
this.numbering = numbering;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public String getAnswer() {
return answer;
}
public String toString(String question,String answer){
return question+"~"+answer;
}
class Standard{
private String standard;
public Standard(){
}
public Standard(String standard){
this.standard = standard;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
class Test{
private String answer;
private String standard;
public Test(){
}
public Test(String answer,String standard){
this.answer = answer;
this.standard = standard;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public void setStandard(String standard) {
this.standard = standard;
}
public String getStandard() {
return standard;
}
public String test(String answer,String standard){
if (answer.equals(standard)) {
return "true";
} else {
return "false";
}
}
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
scan.nextLine();
String[] numbering = new String[num];
String[] question = new String[num];
String[] answer = new String[num];
String[] standard = new String[num];
Paper[] paper = new Paper[num];
for (int i = 0; i < paper.length; i++) {
paper[i] = new Paper();
}
Standard[] standards = new Standard[num];
Test[] tests = new Test[num];
for (int i = 0; i < tests.length; i++) {
tests[i] = new Test();
}
String[] str1 = new String[num];
String[] str2 = new String[num];
String[] str3 = new String[num];
String[] str4 = new String[num];
for (int i = 0; i < num; i++) {
str1[i] = scan.nextLine();
Pattern pattern1 = Pattern.compile("#N:(\\s+)?(\\S+)(\\s+)?#Q:(\\s+)?(.+)(\\s+)?#A:(\\s+)?(\\S+)(\\s+)?");
Matcher matcher1 = pattern1.matcher(str1[i]);
while (matcher1.find()){
numbering[i] = matcher1.group(2);
int sum = Integer.parseInt(numbering[i]);
question[sum-1] = matcher1.group(5).trim();
standard[sum-1] = matcher1.group(8);
}
}
for (int i = 0; i < num; i++) {
answer[i] = "";
str2[i] = scan.next();
Pattern pattern2 = Pattern.compile("#A:(\\s+)?(\\S+)(\\s+)?");
Matcher matcher2 = pattern2.matcher(str2[i]);
while (matcher2.find()) {
answer[i] = matcher2.group(2);
}
}
String end = scan.nextLine();
for(int i = 0; i < num ; i++){
paper[i] = new Paper(num,numbering[i],question[i],answer[i]);
System.out.println(question[i]+"~"+answer[i]);
}
for(int i = 0; i < num; i++){
tests[i] = new Test(answer[i],standard[i]);
str4[i] = tests[i].test(answer[i], standard[i]);
if(i < num - 1){
System.out.print(str4[i]+" ");
}
else{
System.out.print(str4[i]);
}
}
}
分析:第一次作业中,正则表达式还运用的不熟练,类设计也不到位,但由于本题较简单,还是靠堆时间写完了并拿到了100.
2.第二次pta作业:
设计思路:在设计试卷、答卷和题目的基础上,添加多个试卷、答卷的方法以及对应题目的分数和所得分数。
代码:
class Question{
private int numbering;
private String question;
private String standard;
public Question(){
}
public Question(int numbering,String question,String standard){
this.numbering = numbering;
this.question = question;
this.standard = standard;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public void setQuestion(String question) {
this.question = question;
}
public String getQuestion() {
return question;
}
public void setNumbering(int numbering) {
this.numbering = numbering;
}
public int getNumbering() {
return numbering;
}
class PaperNum{
private int papernum;
public PaperNum(){
}
public PaperNum(int papernum){
this.papernum = papernum;
}
public void setPapernum(int papernum) {
this.papernum = papernum;
}
public int getPapernum() {
return papernum;
}
class testPaper{
private int[] numbering;
private int[] grade;
public testPaper(){
}
public testPaper(int[] numbering,int[] grade){
this.numbering = numbering;
this.grade = grade;
}
public void setGrade(int[] grade) {
this.grade = grade;
}
public void setNumbering(int[] numbering) {
this.numbering = numbering;
}
public int[] getGrade() {
return grade;
}
public int getGrade1(int i) {
return grade[i];
}
public int[] getNumbering() {
return numbering;
}
public int getNumbering1(int i) {
return numbering[i];
}
public int getTotal(int size,int[] grade){
int total = 0;
for(int i = 0; i <= size;i++){
total+=grade[i];
}
return total;
}
class answerPaper{
private int answernum;
private String[] answer;
public answerPaper(){
}
public answerPaper(int answernum,String[] answer){
this.answernum = answernum;
this.answer = answer;
}
public void setAnswer(String[] answer) {
this.answer = answer;
}
public String[] getAnswer(int size) {
return answer;
}
public String getAnswer1(int i) {
return answer[i];
}
public int getAnswernum() {
return answernum;
}
public void setAnswernum(int answernum) {
this.answernum = answernum;
}
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
List<testPaper> papers = new ArrayList<>();
List<answerPaper> answers = new ArrayList<>();
List<PaperNum> papernums = new ArrayList<>();
List<String> leftNumbers = new ArrayList<>();
List<String> rightNumbers = new ArrayList<>();
Question[] questions = new Question[100];
PaperNum[] paperNums = new PaperNum[100];
testPaper[] testPapers = new testPaper[100];
answerPaper[] answerPapers = new answerPaper[100];
int num1 = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
int numbering = 0;
int total = 0;
String[] question = new String[100];
String[] standard = new String[100];
int answernum = 0;
String[] answer = new String[100];
int papernum = 0;
int[] grade = new int[100];
int[] gets = new int[100];
int[] numberings = new int[100];
int z = 0;
int get = 0;
for (int t = 0; ; t++) {
String line = scan.nextLine();
if (line.equals("end")) {
break;
}
Pattern pattern1 = Pattern.compile("#N:(\\s+)?(\\d+)(\\s+)?#Q:(\\s+)?(.+)(\\s+)?#A:(\\s+)?(\\S+)(\\s+)?");
Matcher matcher1 = pattern1.matcher(line);
Pattern pattern2 = Pattern.compile("#S:(\\d+)((\\s+)#A:(\\S+))*");
Matcher matcher2 = pattern2.matcher(line);
Pattern pattern3 = Pattern.compile("#T: *(\\d+)");
Matcher matcher3 = pattern3.matcher(line);
Pattern pattern4 = Pattern.compile("((\\d+)-(\\d+))");
Matcher matcher4 = pattern4.matcher(line);
while (matcher1.find()) {
numbering = Integer.parseInt(matcher1.group(2));
question[numbering] = matcher1.group(5).trim();
standard[numbering] = matcher1.group(8);
num1++;
}
while (matcher2.find()) {
line = line.replaceAll("#S:|#A:", "");
answer = line.split("\\s+");
answernum = Integer.parseInt(answer[0]);
for (int j = 1; j < answer.length; j++) {
answer[j - 1] = answer[j];
if(j == answer.length-1){
answer[j] = "";
}
}
z = answer.length - 1;
answerPapers[num2] = new answerPaper(answernum, answer);
num2++;
}
while (matcher3.find()) {
papernum = Integer.parseInt(matcher3.group(1));
paperNums[num3] = new PaperNum(papernum);
num3++;
}
while (matcher4.find()) {
numbering = Integer.parseInt(matcher4.group(2));
numberings[num4] = numbering;
grade[num4] = Integer.parseInt(matcher4.group(3));
testPapers[num4] = new testPaper(numberings, grade);
num4++;
}
}
for (int i = 0; i < num3; i++) {
total += testPapers[i].getTotal(num4, testPapers[i].getGrade());
if (total != 100) {
System.out.println("alert: full score of test paper" + paperNums[i].getPapernum() + " is not 100 points");
}
}
for (int i = 0; i < num2; i++) {
for (int j = 0; j < z; j++) {
if (answerPapers[i].getAnswer1(j).equals(standard[numberings[j]])) {
System.out.println(question[numberings[j]] + "~" + answerPapers[i].getAnswer1(j) + "~true");
gets[j] = testPapers[i].getGrade1(j);
} else {
System.out.println(question[numberings[j]] + "~" + answerPapers[i].getAnswer1(j) + "~false");
gets[j] = 0;
}
get += gets[j];
}
for (int l = 0; l < z; l++) {
if (l < z - 1) {
System.out.print(gets[l] + " ");
}
if (l == z - 1) {
System.out.print(gets[l]);
}
}
System.out.println("~" + get);
get = 0;
}
int x = 0;
for(int i = 0; i < num3; i++){
for(int j = 0;j < num2;j++){
if(paperNums[j].getPapernum() == answerPapers[i].getAnswernum()){
x = 1;
break;
}
if(x == 1){
break;
}
}
}
if(x == 0){
System.out.println("The test paper number does not exist");
}
}
分析:在第二次作业中,没有搞清楚需求,也没有弄好设计,导致写出的代码思路混乱,很难改动,再重新写了一遍才达到了及格分数
3.第三次pta作业:
设计思路:在第二次作业的基础上,增加学生信息和删除题目的信息,然后设计讨论是否有此学生已经是否删除题目的情况。
代码:
class Question{
private int numbering;
private String question;
private String standard;
public Question(){
}
public Question(int numbering,String question,String standard){
this.numbering = numbering;
this.question = question;
this.standard = standard;
}
public String getStandard() {
return standard;
}
public void setStandard(String standard) {
this.standard = standard;
}
public void setQuestion(String question) {
this.question = question;
}
public String getQuestion() {
return question;
}
public void setNumbering(int numbering) {
this.numbering = numbering;
}
public int getNumbering() {
return numbering;
}
class TestPaper{
private int papernum;
private int[] numberings;
private int[] grade;
private int T;
public TestPaper(){
}
public TestPaper(int papernum,int[] numberings,int[] grade,int T){
this.papernum = papernum;
this.grade = grade;
this.numberings = numberings;
this.T = T;
}
public void setNumbering(int[] numberings) {
this.numberings = numberings;
}
public int[] getNumberings() {
return numberings;
}
public int getNumbering1(int i){
return this.numberings[i];
}
public int getPapernum() {
return papernum;
}
public void setPapernum(int papernum) {
this.papernum = papernum;
}
public void setGrade(int[] grade) {
this.grade = grade;
}
public void setGrade1(int i,int grade1) {
grade[i] = grade1;
}
public int[] getGrade() {
return grade;
}
public int getGrade1(int i){
return grade[i];
}
public int getT() {
return T;
}
public void setT(int T) {
this.T =T;
}
class Student{
private String[] studentnum;
private String[] name;
public Student(){
}
public Student(String[] studentnum,String[] name){
this.studentnum = studentnum;
this.name = name;
}
public void setStudentnum(String[] studentnum) {
this.studentnum = studentnum;
}
public void setName(String[] name) {
this.name = name;
}
public String[] getStudentnum() {
return studentnum;
}
public String[] getName() {
return name;
}
public String getStudentnum1(int i) {
return studentnum[i];
}
public String getName1(int i) {
return name[i];
}
class AnswerPaper{
private int answernum;
private String studentnum;
private int[] numbering;
private String[] answer;
private int A;
public AnswerPaper(){
}
public AnswerPaper(int answernum,String studentnum,int[] numbering,String[] answer,int A){
this.answer = answer;
this.numbering = numbering;
this.answernum = answernum;
this.studentnum = studentnum;
this.A = A;
}
public void setStudentnum(String studentnum) {
this.studentnum = studentnum;
}
public int[] getNumbering() {
return numbering;
}
public void setNumbering(int[] numbering) {
this.numbering = numbering;
}
public void setAnswer(String[] answer) {
this.answer = answer;
}
public String[] getAnswer() {
return answer;
}
public String getStudentnum() {
return studentnum;
}
public int getAnswernum() {
return answernum;
}
public void setAnswernum(int answernum) {
this.answernum = answernum;
}
public String getAnswer1(int i){
return answer[i];
}
public int getNumbering1(int i){
return numbering[i];
}
public int getA() {
return A;
}
public void setA(int A) {
this.A = A;
}
class Delete{
private int numbering;
public Delete(){
}
public Delete(int numbering){
this.numbering = numbering;
}
public void setNumbering(int numbering) {
this.numbering = numbering;
}
public int getNumbering() {
return numbering;
}
public class Main {
public static int test(String standard,String answer){
if(standard.equals(answer)){
return 1;
}
else {
return 0;
}
}
public static int delete(int i,int j){
if(i == j){
return 1;
}
else {
return 0;
}
}
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
Question[] questions = new Question[100];
TestPaper[] testPapers = new TestPaper[100];
Student[] students = new Student[100];
AnswerPaper[] answerPapers = new AnswerPaper[100];
Delete[] deletes = new Delete[100];
int num1 = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
int num5 = 0;
int numbering = 0;
String question = "";
String standard = "";
int papernum = 0;
int[] numberings = new int[100];
int[] numberings1 = new int[100];
int[] grade = new int[100];
String[] studentnum = new String[100];
String[] name = new String[100];
int answernum = 0;
String studentnums = "";
String[] answer = new String[100];
int total = 0;
int get = 0;
int gets[] = new int[100];
int z = 0;
int s = 0;
int o = 0;
int[] x = new int[100];//用于判断输入
String[] wrong = new String[100];//用于导入错误字符串
for(int t = 0;;t++){
String line = scan.nextLine();
Pattern pattern1 = Pattern.compile("#N:(\\s+)?(\\d+)(\\s+)?#Q:(\\s+)?(.+)(\\s+)?#A:(\\s+)?(\\S+)(\\s+)?");
Matcher matcher1 = pattern1.matcher(line);
Pattern pattern2 = Pattern.compile("#S:(\\d+)((\\s+)#A:(\\S+))*");
Matcher matcher2 = pattern2.matcher(line);
Pattern pattern3 = Pattern.compile("#T: *(\\d+)((\\s+)(\\d+)-(\\d+))*");
Matcher matcher3 = pattern3.matcher(line);
Pattern pattern4 = Pattern.compile("#X:((\\s+)?(\\S+)(\\s+)(\\S+))+");
Matcher matcher4 = pattern4.matcher(line);
Pattern pattern5 = Pattern.compile("#D:N-(\\d+)");
Matcher matcher5 = pattern5.matcher(line);
if(line.equals("end")){
break;
}
if(matcher1.find()||matcher2.find()||matcher3.find()||matcher4.find()||matcher5.find()) {
boolean containsN = line.contains("#N");
boolean containsQ = line.contains("#Q");
boolean containsA = line.contains("#A");
if (containsN && containsQ && containsA) {
line = line.replaceAll("#N:|#Q:|#A:", "");
String[] str = line.split(" ");
numbering = Integer.parseInt(str[0]);
question = str[1];
standard = str[2];
questions[numbering - 1] = new Question(numbering, question, standard);//按题目序号存储
x[num1] = 1;
num1++;//题目数
}
if (line.contains("#T")) {
line = line.replaceAll("#T:", "");
String[] str = line.split(" ");
papernum = Integer.parseInt(str[0]);
z = str.length - 1;//试卷题目总数
for (int i = 1; i < str.length; i++) {
String[] str1 = str[i].split("-");
numberings[i - 1] = Integer.parseInt(str1[0]);
grade[numberings[i - 1]-1] = Integer.parseInt(str1[1]);
//试卷题号按顺序存,分数按题号存
}
testPapers[papernum - 1] = new TestPaper(papernum, numberings, grade,z);//试卷按照试卷号存储,题目和分数按照所给顺序存储(numbering[0]是要输出的第一个题号)
num2++;//试卷数
}
if (line.contains("#X:")) {
line = line.replaceAll("#X:", "");
String[] str = line.split("-");
o = str.length;
for (int i = 0; i < str.length; i++) {
String[] str1 = str[i].split(" ");
studentnum[i] = str1[0];
name[i] = str1[1];
//顺序赋学生信息
}
students[num3] = new Student(studentnum, name);//存学生信息
num3++;
}
if (line.contains("#D:")) {
line = line.replaceAll("#D:", "");
line = line.replaceAll("N-", "");
numbering = Integer.parseInt(line);
deletes[num4] = new Delete(numbering);
num4++;
}
if (line.contains("#S:")) {
line = line.replaceAll("#S:|#A:", "");
String[] str = line.split(" ");
answernum = Integer.parseInt(str[0]);
studentnums = str[1];
s = str.length-2;//一套答卷的答题数
for (int i = 2; i < str.length; i++) {
String[] str1 = str[i].split("-");
numberings1[i - 2] = Integer.parseInt(str1[0]);
answer[numberings1[i - 2]-1] = str1[1];
//答卷题号按顺序存,答案按序号存
}
answerPapers[num5] = new AnswerPaper(answernum, studentnums, numberings1, answer,s);
num5++;//答卷数
}
}
else {
System.out.println("wrong format:"+line);
}
}
if(num4 > 0){
for(int i = 0; i < num2;i++){
for (int j = 0;j < num4;j++){
testPapers[i].setGrade1(deletes[j].getNumbering()-1,0);//将删除的题目的分数设置为0
}
}
}
for(int i = 0; i < num2;i++){
for(int j = 0; j < z;j++){
total += testPapers[i].getGrade1(j);
}
if(total != 100){
System.out.println("alert: full score of test paper"+testPapers[i].getPapernum()+" is not 100 points");
}
}
int p = 0;
for(int i = 0; i < num5;i++) {
for (int j = 0; j < num2; j++) {
if (answerPapers[i].getAnswernum() == testPapers[j].getPapernum()){
p = 1;
}
}
}
for(int i = 0; i < num5;i++){
for (int j = 0; j < num2;j++){
if(p == 0){
System.out.println("The test paper number does not exist");
}
else {//答卷对应试卷
for (int k = 0; k < testPapers[i].getT(); k++) {
int q = 0;
for (int k2 = 0; k2 < num1; k2++) {
if (questions[k2].getNumbering() == testPapers[j].getNumbering1(k)) {
q = 1;
}
if(q == 1){
break;
}
}
if (q == 0) {
System.out.println("non-existent question~0");
gets[k] = 0;
}
if (q == 1) {
if(num4 > 0){
for (int j1 = 0; j1 < num4; j1++) {
if (testPapers[j].getNumbering1(k) == deletes[j1].getNumbering()) {
System.out.println("the question " + testPapers[i].getNumbering1(k) + " invalid~0");
gets[k] = 0;
} else {
if (answerPapers[i].getA() >= testPapers[j].getT()) {
if (test(questions[testPapers[j].getNumbering1(k) - 1].getStandard(), answerPapers[i].getAnswer1(answerPapers[i].getNumbering1(k) - 1)) == 1) {//standard按照answer的编号输
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~true");
gets[k] = testPapers[j].getGrade1(testPapers[j].getNumbering1(k) - 1);
} else {
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~false");
gets[k] = 0;
}
} else {
for (int n = 0; n < answerPapers[i].getA(); n++) {
if (test(questions[testPapers[j].getNumbering1(k) - 1].getStandard(), answerPapers[i].getAnswer1(answerPapers[i].getNumbering1(k) - 1)) == 1) {//standard按照answer的编号输
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~true");
gets[k] = testPapers[j].getGrade1(testPapers[j].getNumbering1(k) - 1);
} else {
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~false");
gets[k] = 0;
}
}
for (int m = answerPapers[i].getA(); m < testPapers[j].getT(); m++) {
System.out.println("answer is null");
gets[m] = 0;
}
}
}
get += gets[k];
}
}
else {
if (answerPapers[i].getA() >= testPapers[j].getT()) {
if (test(questions[testPapers[j].getNumbering1(k) - 1].getStandard(), answerPapers[i].getAnswer1(answerPapers[i].getNumbering1(k) - 1)) == 1) {//standard按照answer的编号输
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~true");
gets[k] = testPapers[j].getGrade1(testPapers[j].getNumbering1(k) - 1);
} else {
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~false");
gets[k] = 0;
}
} else {
for (int n = 0; n < answerPapers[i].getA(); n++) {
if (test(questions[testPapers[j].getNumbering1(k) - 1].getStandard(), answerPapers[i].getAnswer1(answerPapers[i].getNumbering1(k) - 1)) == 1) {//standard按照answer的编号输
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~true");
gets[k] = testPapers[j].getGrade1(testPapers[j].getNumbering1(k) - 1);
} else {
System.out.println(questions[testPapers[j].getNumbering1(k) - 1].getQuestion() + "~" + answerPapers[i].getAnswer1(k) + "~false");
gets[k] = 0;
}
}
for (int m = answerPapers[i].getA(); m < testPapers[j].getT(); m++) {
System.out.println("answer is null");
gets[m] = 0;
}
}
}
get += gets[k];
}
}
int st = 1;
for(int l1 = 0; l1 < num3; l1++){
for (int l2 = 0;l2 < o;l2++) {
if (answerPapers[i].getStudentnum().equals(students[l1].getStudentnum1(l2))){
st = 0;
System.out.print(students[l1].getStudentnum1(l2)+" "+students[l1].getName1(l2)+": ");
for (int l3 = 0; l3 < z; l3++) {
if (l3 < z - 1) {
System.out.print(gets[l3] + " ");
}
if (l3 == z - 1) {
System.out.print(gets[l3]);
}
}
System.out.println("~" + get);
get = 0;
}
}
}
if(st == 1){
System.out.println(answerPapers[i].getStudentnum()+" not found");
}
}
}
}
}
分析:这次相较于上次的作业,明显有了更清晰的思路和解决问题的方法,但由于设计方面依然没到位,再加上题目难度的提升,导致分数没有太大的变化。
3.采坑心得
1.第一次pta作业:刚提交时,没用正则表达式,以至于没拿到很好的成绩

后续在ideal中不断修改并用上正则表达式后,终于写到了满分。
2.第二次pta作业:吸取了第一次作业的教训,第二次作业中运用了正则表达式,但由于用了第一次本就不完善的设计,导致第二次作业难以下手

最后也是时间原因,没有把这题刷到满分

3.第三次pta作业:在第二次作业的基础上增添了学生信息和删除信息,在研究完题目之后,没有处理好乱序输入、信息的删除和错误信息,所以还有很多测试点没过,但到最后,还是勉强达到了及格分


4.改进建议
1.类与类之言要遵循单一职责原则
2.设计一个代理类来处理需要的数据
3.在写之前千万要先设计,不要提笔就写,只有设计写好了,思路才会清晰,代码才会完整。
5.总结
在这三次作业中,最主要的问题还是设计问题,没有好的设计就很难写出完整的代码,就会有很多报错,因而拿不到分,在接下来的作业里,我要做到如下方面:
1.写之前先看题,思考如何设计。
2.勤能补拙,在pta作业中投入更多时间。
3.对每次的失误和不足进行补充分析,应对下一次的难题。

浙公网安备 33010602011771号