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.对每次的失误和不足进行补充分析,应对下一次的难题。

posted @ 2024-04-19 20:47  小丑-zw  阅读(34)  评论(0)    收藏  举报