首页 > 编程语言 >第一次Blog总结-前三次答题判定程序

第一次Blog总结-前三次答题判定程序

时间:2024-04-21 14:55:35浏览次数:23  
标签:String 答题 int Blog 判定 answer new line public

目录

关于java&面向对象
因为这学期刚开始学习java,因此对于java的某些知识点或技巧掌握地不是太熟练, 但是经过长达三周的折磨下,总算对java有了初步的总体认知。

前言

  1. 知识点覆盖:数组灵活运用,List和Map接口灵活运用,各种类的设计已经类之间的关系,正则表达式对字符串的灵活分割,对异常处理以及异常输出优先级的逻辑。

  2. 题量变化:一,二,三题虽然看起来是同一题,但写起来不可同日而语,题量确实都是一题,但题目内容却是一题更比一题多。

  3. 难度变化:怎么说呢,一,二,三题简直不是一个量型的好吧,难度简直成85度斜坡递增,每一题在上一题的基础上增加了大量内容,比如错误警告之类的,需要及其清晰的逻辑才能理清楚题目讲了什么。还有后一题真的是在前一题的基础上完全迭代出来的,比如第一次pta用的是数组,第二次发现有List列表这种好工具,比数组添加元素或查询元素更加方便,就在第一次代码的基础上大改特改,把数组全部替换成List列表了,但是在第三次pta中需要保存题目,试卷,答卷,答案等对应的编号,发现List有些力不从心了,又找到Map这种“宝藏”,于是又大改特改,把List全部替换成Map了,有些没有顺序的依旧是用的List,一次次大改特改也是心累呀!

  4. 反馈和调整:题目的数量和难度都可以接受,其实在写过三次pta后我学得不太多,理解也不够深,像继承,多态等等东西,也没怎么用过,等以后再来谈这方面吧。总体来看我觉得我的代码已经写得足够精简了,虽然最后的成品也有347行,但比起同学的5,600行已经写得够少了。

设计与分析

  目前第三次pta的代码已经设计了5个类,分别是Question类(题目类),Testpaper类(试卷类),AnswerSheet类(答卷类),Student类(学生类),Delete类(删除类),第一次和第二次都是只设计了前三种类,很明显类的种类设计少了,并没有遵守单一职责原则,以后会进行改正。

1. 第一次pta

点击查看代码
import java.util.*;
class Topic{
    int num;
    String content;
    String standardAnswer;
    public Topic(){

    }
    public Topic(int num,String content,String standardAnswer){
        this.num=num;
        this.content=content;
        this.standardAnswer=standardAnswer;
    }
    public int getterNum(){
        return num;
    }
    public void setterNum(int num){
        this.num=num;
    }
    public String getterContent(){
        return content;
    }
    public void setterContent(String content){
        this.content=content;
    }
    public String getterStandardAnswer(){
        return standardAnswer;
    }
    public void setterStandardAnswer(String standardAnswer){
        this.standardAnswer=standardAnswer;
    }
    public boolean judgment(String answer){
        return answer.equals(standardAnswer);
    }
}
class Paper{
    List<Topic> topiclist;
    Topic topic;
    String standaranswer;
    int num;
    public Paper(){

    }
    public void add(Topic topic){
        this.topic=topic;
    }
    public void setStandarAnswer(String standaranswer){
        this.standaranswer=standaranswer;
    }

    public Boolean judgment(AnswerPaper answer){
        return standaranswer.equals(answer.getAnswer());
    }
    public int getterNum() {
        return num;
    }
    public Topic getTopic(){
        return topic;
    }

    public List<Topic> getterTopiclist() {
        return topiclist;
    }
}
class AnswerPaper{
    Paper paper;
    List<String> answers;
    List<Boolean> judgment;
    String answer;
    public AnswerPaper(){

    }
    public AnswerPaper(Paper paper) {
        this.paper = paper;
        this.answers = new ArrayList<>();
        this.judgment = new ArrayList<>();
        for (int i = 0; i < paper.getterTopiclist().size(); i++) {
            judgment.add(null);
            answers.add("");
        }
    }
    public void setAnswers(String answer){
        this.answer=answer;
    }
    public String getAnswer(){
        return answer;
    }
    public void judge(int num) {
        String correctAnswer = paper.getterTopiclist().get(num - 1).getterStandardAnswer();
        if (answers.get(num - 1).equals(correctAnswer)) {
            judgment.set(num - 1, true);
        } else {
            judgment.set(num - 1, false);
        }
    }
    public String output(int num) {
        Topic topic = paper.getterTopiclist().get(num - 1);
        String result = judgment.get(num - 1) ? "true" : "false";
        String outputStr = topic.content + "~" + answers.get(num - 1)+ "\n" ;
        return outputStr;
    }
    public void saveAnswer(int num, String answer) {
        answers.set(num - 1, answer);
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Paper[] paper=new Paper[n];
        Topic[] topic=new Topic[n];
        AnswerPaper[] answerpaper=new AnswerPaper[n];
        for(int i=0;i<n;i++){
            paper[i]=new Paper();
            topic[i]=new Topic();
            answerpaper[i]=new AnswerPaper();
        }
        sc.nextLine();
        for (int i = 0; i < n; i++) {
            String line = sc.nextLine();
            int num1= Integer.parseInt(line.substring(line.indexOf("#N:") + 3, line.indexOf("#Q:")).trim())-1;
            String  content1= line.substring(line.indexOf("#Q:") + 3, line.indexOf("#A:")).trim();
            String  standardAnswer1= line.substring(line.indexOf("#A:") + 3).trim();
            topic[num1].setterContent(content1);
            paper[num1].add(topic[num1]);
            paper[num1].setStandarAnswer(standardAnswer1);
        }
        for (int i=0;i<n;i++){
            String answerInput = sc.next();
            String answers = answerInput.substring(3);
            answerpaper[i].setAnswers(answers);
        }
        for(int i=0;i<n;i++){
            System.out.println(paper[i].getTopic().getterContent()+"~"+answerpaper[i].getAnswer());
        }
        for(int i=0;i<n;i++){
            if(i==n-1){
                System.out.print(paper[i].judgment(answerpaper[i]));
            }
            else {
                System.out.print(paper[i].judgment(answerpaper[i])+" ");
            }
        }

    }

}
  说实话写第一次pta时确实很懵呀,因为以前并没有接触过这种难题,况且当时刚接触java,并不知道正则表达式之类的如何使用,因此脑袋里能想到的只有数组了,后面经过逐渐学习发现数组的效率及其低并且很不方便。
  还有一件事,在接触正则表达式之前,我最先接触的是分割字符串,比如String content1= line.substring(line.indexOf("#Q:") + 3, line.indexOf("#A:")).trim();等,对付第一次pta还行,但是第二,三次就力不从心了。
  还有一件事,因为刚接触java,类和类之间关系的设计并不是太理想,并且写第一次pta时没有经验,敲代码时脑袋纯是一团浆糊,因此第一次pta的代码有很多冗余的部分,比如 topic[num1].setterContent(content1); paper[num1].add(topic[num1]); paper[num1].setStandarAnswer(standardAnswer1);
确实做的不够好,但接下来两次pta中逐渐改正了过来。
  第一次pta的代码请自行查看,因为写得太逊了,我也不好意思过多地讲解,SourceMontor的生成报表内容以及PowerDesigner的相应类图也不放出来了,重点是后两次的pta。

2. 第二次pta

点击查看代码

import java.util.*;

// 题目类
class Question {
    private int number; // 题目编号
    private String content; // 题目内容
    private String answer; // 标准答案

    public Question(int number, String content, String answer) {
        this.number = number;
        this.content = content;
        this.answer = answer;
    }

    public int getNumber() {
        return number;
    }

    public String getContent() {
        return content;
    }

    public String getAnswer() {
        return answer;
    }
}

// 试卷类
class TestPaper {
    private int paperNumber; // 试卷号
    // 题目编号到题目分值的映射,使用LinkedHashMap以保持题目输入的顺序
    private Map<Integer, Integer> questions = new LinkedHashMap<>();

    public TestPaper(int paperNumber) {
        this.paperNumber = paperNumber;
    }

    public void addQuestion(int questionNumber, int score) {
        questions.put(questionNumber, score);
    }

    public int getPaperNumber() {
        return paperNumber;
    }

    public Map<Integer, Integer> getQuestions() {
        return questions;
    }

    public int getTotalScore() {
        return questions.values().stream().mapToInt(Integer::intValue).sum();
    }
    public void checkTotalScore() {
        int totalScore = getTotalScore();
        if (totalScore != 100) {
            System.out.println("alert: full score of test paper" + paperNumber + " is not 100 points");
        }
    }
}

// 答卷类
class AnswerSheet {
    private int paperNumber; // 试卷号
    private List<String> answers; // 答案列表

    public AnswerSheet(int paperNumber, List<String> answers) {
        this.paperNumber = paperNumber;
        this.answers = answers;
    }

    public int getPaperNumber() {
        return paperNumber;
    }

    public List<String> getAnswers() {
        return answers;
    }
}

public class Main {
    private Map<Integer, Question> questions = new HashMap<>();
    private Map<Integer, TestPaper> testPapers = new HashMap<>();
    private List<AnswerSheet> answerSheets = new ArrayList<>();
    public static void main(String[] args) {
        new Main().run();

    }
    private void run() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            if ("end".equals(line)) break;
            parseInput(line);
        }
        for (AnswerSheet sheet : answerSheets) {
            processAnswerSheet(sheet);
        }
    }
    private void parseInput(String line) {
        if (line.startsWith("#N:")) {
            String[] parts = line.split(" #Q:| #A:");
            int number = Integer.parseInt(parts[0].substring(3));
            questions.put(number, new Question(number,parts[1], parts[2]));
        } else if (line.startsWith("#T:")) {
            String[] parts = line.substring(3).split(" ");
            int testPaperNumber = Integer.parseInt(parts[0]);
            TestPaper testPaper = new TestPaper(testPaperNumber);
            for (int i = 1; i < parts.length; i++) {
                String[] questionParts = parts[i].split("-");
                testPaper.addQuestion(Integer.parseInt(questionParts[0]), Integer.parseInt(questionParts[1]));
            }
            testPapers.put(testPaperNumber, testPaper);
            testPaper.checkTotalScore();

        }
        else if (line.startsWith("#S:")) {
            String[] parts = line.split(" #A:");
            int testPaperNumber = Integer.parseInt(parts[0].substring(3));
            List<String> answers = new ArrayList<>(Arrays.asList(parts).subList(1, parts.length));
            answerSheets.add(new AnswerSheet(testPaperNumber, answers));
        }
    }
    private void processAnswerSheet(AnswerSheet sheet) {
        TestPaper paper = testPapers.get(sheet.getPaperNumber());
        List<String> answers = sheet.getAnswers();
        List<Integer> scores = new ArrayList<>();
        int totalScore = 0;
        int questionIndex = 0;
        for (Map.Entry<Integer, Integer> entry : paper.getQuestions().entrySet()) {
            Question question = questions.get(entry.getKey());
            int score = 0;
            if (questionIndex < answers.size()) {
                String answer = answers.get(questionIndex);
                boolean correct = question.getAnswer().equals(answer);
                score = correct ? entry.getValue() : 0;
                System.out.println(question.getContent() + "~" + answer + "~" + correct);
            } else {
                System.out.println("answer is null");
            }
            scores.add(score);
            totalScore += score;
            questionIndex++;
        }
        System.out.print(scores.get(0));
        for (int i = 1; i < scores.size(); i++) {
            System.out.print(" " + scores.get(i));
        }
        System.out.println("~" + totalScore);
    }
}



  如果你把第一次的代码和第二次的代码相比较,会发现变化真的好大,这都是我没日没夜大改特改的结果呀!
  相较于第一次的代码,第二次我已经可以初步掌握正则表达式了,并且在处理输入时将其与字符串分割结合起来,使得对输入的处理更加高效,快捷。并且有了List和Map这两大神器,List是专门保存无序的属性的,比如private Map<integer, question=""> questions = new HashMap<>();private Map<integer, testpaper=""> testPapers = new HashMap<>();而Map是专门保存有序的属性的,比如 List answers = sheet.getAnswers();List scores = new ArrayList<>();等,何愁pta的题目不会写呀。

3.第三次pta

点击查看代码
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

// 题目类
class Question {
    private int number; // 题目编号
    private String content; // 题目内容
    private String answer; // 标准答案

    public Question(int number, String content, String answer) {
        this.number = number;
        this.content = content;
        this.answer = answer;
    }

    public int getNumber() {
        return number;
    }

    public String getContent() {
        return content;
    }

    public String getAnswer() {
        return answer;
    }
}

// 试卷类
class TestPaper {
    private int paperNumber; // 试卷号
    // 题目编号到题目分值的映射,使用LinkedHashMap以保持题目输入的顺序
    private LinkedHashMap<Integer, Integer> questions_scores = new LinkedHashMap<>();

    public TestPaper(int paperNumber) {
        this.paperNumber = paperNumber;
    }

    public void addQuestion_score(int questionNumber, int score) {
        questions_scores.put(questionNumber, score);
    }

    public int getPaperNumber() {
        return paperNumber;
    }

    public Map<Integer, Integer> getQuestions_scores() {
        return questions_scores;
    }

    public int getTotalScore() {
        return questions_scores.values().stream().mapToInt(Integer::intValue).sum();
    }
    public void checkTotalScore() {
        int totalScore = getTotalScore();
        if (totalScore != 100) {
            System.out.println("alert: full score of test paper" + paperNumber + " is not 100 points");
        }
    }
}

// 答卷类
class AnswerSheet {
    private int answerPaperNumber; // 试卷号
    private String studentID;
    private Map<Integer, String> userAnswers; // 答案列表


    public AnswerSheet() {
    }

    public AnswerSheet(int answerPaperNumber, String studentID, Map<Integer, String> userAnswers) {
        this.answerPaperNumber = answerPaperNumber;
        this.studentID = studentID;
        this.userAnswers = userAnswers;
    }

    public int getAnswerPaperNumber() {
        return answerPaperNumber;
    }

    public Map<Integer, String> getUserAnswers() {
        return userAnswers;
    }

    public void setAnswerPaperNumber(int answerPaperNumber) {
        this.answerPaperNumber = answerPaperNumber;
    }


    public String getStudentID() {
        return studentID;
    }

    public void setStudentID(String studentID) {
        this.studentID = studentID;
    }

    public void setUserAnswers(Map<Integer, String> userAnswers) {
        this.userAnswers = userAnswers;
    }


}
//学生类
class Student {
    private String studentID;
    private String studentName;


    public Student() {
    }

    public Student(String studentID, String studentName) {
        this.studentID = studentID;
        this.studentName = studentName;
    }

    public String getStudentID() {
        return studentID;
    }

    public void setStudentID(String studentID) {
        this.studentID = studentID;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }
}
//删除类
class Delete{
    private int deleteNumber;


    public Delete() {
    }

    public Delete(int deleteNumber) {
        this.deleteNumber = deleteNumber;
    }

    public int getDeleteNumber() {
        return deleteNumber;
    }

    public void setDeleteNumber(int deleteNumber) {
        this.deleteNumber = deleteNumber;
    }

    public void deleteQuestion(int deleteNumber,Map<Integer,Question> questions){
        questions.remove(deleteNumber);
    }
}
class Wrong_Format{

}
public class Main {
    Map<Integer, Question> questions_AfterDelete =new HashMap<>();
    Map<Integer, Question> questions_BeforeDelete = new HashMap<>();
    Map<Integer, TestPaper> testPapers = new HashMap<>();
    List<AnswerSheet> answerSheets = new ArrayList<>();
    Map<Integer, String> userAnswers = new HashMap<>();
    private ArrayList<String> F = new ArrayList<>();
    Map<String, Student> studentID_student = new HashMap<>();
    public static void main(String[] args) {
        new Main().run();

    }
    private void run() {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            if (line.matches("(\\s*#N:\\s*[0-9]+\\s+?#Q:[^#]+\\s+?#A:[^#]*)\\s*")||
                    line.matches("\\s*#T:\\s*[0-9]+\\s*") ||
                    line.matches("(\\s*#T:\\s*[0-9]+\\s*)(\\s+[0-9]+-[0-9]+)+\\s*")||
                    line.matches("(\\s*#S:\\s*[0-9]+\\s+[0-9]+)\\s*") ||
                    line.matches("(\\s*#S:\\s*[0-9]+\\s+?[0-9]+)(\\s+#A:\\s*[0-9]+-\\S*)+\\s*")||
                    line.matches("(\\s*#X:\\s*)") ||
                    line.matches("(\\s*#X:\\s*)([0-9]+\\s+[^- ]+-)*([0-9]+\\s+[^- ]+)\\s*")||
                    line.matches("\\s*#D:\\s*") ||
                    line.matches("\\s*#D:\\s*N-[0-9]+\\s*")||line.equals("end")) {
                if ("end".equals(line)) break;
                parseInput(line);
            }
            else
                F.add(line);
        }
        boolean executed = false;
        if (!executed) {
            printFault();
            executed = true;
        }
            for (Integer key :testPapers.keySet()) {
                testPapers.get(key).checkTotalScore();
            }


        for (AnswerSheet sheet : answerSheets) {
            processAnswerSheet(sheet);
        }


    }
    public void printFault(){//对错误信息进行输出
        for (String s : F) {
            System.out.println("wrong format:" + s);
        }
    }
    private void parseInput(String line) {

            if (line.startsWith("#N:")) {
                String[] parts = line.split("#N:|#Q:|#A:");

                int num = Integer.parseInt(parts[1].trim());
                String content = parts[2].trim();
                String answer = parts[3].trim();
                if (answer.isEmpty())
                    answer=" ";
                questions_AfterDelete.put(num, new Question(num, content, answer ));
                questions_BeforeDelete.put(num, new Question(num, content, answer ));

            }
            else if (line.startsWith("#T:")) {

                    String[] parts = line.substring(3).split("\\s+");
                    int testPaperNumber = Integer.parseInt(parts[0].trim());
                    TestPaper testPaper = new TestPaper(testPaperNumber);
                    for (int i = 1; i < parts.length; i++) {
                        String[] questionParts = parts[i].split("-");
                        testPaper.addQuestion_score(Integer.parseInt(questionParts[0].trim()), Integer.parseInt(questionParts[1].trim()));
                    }
                    testPapers.put(testPaperNumber, testPaper);

            }
            else if (line.startsWith("#S:")) {

                    String[] parts = line.split(" #A:");
                    String[] answerPaperNumber_studentIDParts = parts[0].substring(3).split(" ");
                    int answerPaperNumber = Integer.parseInt(answerPaperNumber_studentIDParts[0].trim());
                    String studentID = answerPaperNumber_studentIDParts[1].trim();
                    for (int i = 1; i < parts.length; i++) {
                        String[] answerPaperParts = parts[i].split("-",2);
                        int answerNumber= Integer.parseInt(answerPaperParts[0].trim());
                        String answer=answerPaperParts[1].trim();
                        if (Objects.equals(answer, "")){
                            answer=" ";
                        }
                        userAnswers.put(answerNumber,answer);
                    }
                    answerSheets.add(new AnswerSheet(answerPaperNumber,studentID, userAnswers));

            }
            else if (line.startsWith("#X:")) {

                    String[] parts = line.substring(3).split("-");
                    for (String part : parts) {
                        String[] studentParts = part.split("\\s+");
                        String studentID = studentParts[0];
                        Student student = new Student(studentID, studentParts[1]);
                        studentID_student.put(studentID, student);
                    }

            }
            else if (line.startsWith("#D:")){

                    String[] parts=line.substring(3).split("-");
                    int deleteNumber=Integer.parseInt(parts[1]);
                    Delete deleteQuestion=new Delete(deleteNumber);
                    deleteQuestion.deleteQuestion(deleteNumber, questions_AfterDelete);
            }

    }
    private void processAnswerSheet(AnswerSheet sheet) {
        TestPaper paper = testPapers.get(sheet.getAnswerPaperNumber());
        if(paper==null){
            System.out.println("The test paper number does not exist");
            return;
        }
        Map<Integer, String> userAnswers = sheet.getUserAnswers();
        List<Integer> scores = new ArrayList<>();
        int totalScore = 0;

        for (Map.Entry<Integer, Integer> entry : paper.getQuestions_scores().entrySet()) {
            Question question_AfterDelete = questions_AfterDelete.get(entry.getKey());
            int position = 0;
            int searchKey = entry.getKey();
            for (Integer key : paper.getQuestions_scores().keySet()) {
                position++;
                if (key.equals(searchKey)) {
                    break;
                }
            }
                String userAnswer = userAnswers.get(position);

            int score = 0;

            if(!questions_BeforeDelete.containsKey(entry.getKey())){

                System.out.println("non-existent question~0");
            }
            else{
                if (userAnswer == null|| userAnswer.isEmpty()) {
                    System.out.println("answer is null");
                    scores.add(score);
                    continue;
                }
            }

            if (question_AfterDelete == null) {
                if (questions_BeforeDelete.containsKey(entry.getKey())) {
                    System.out.println("the question " + entry.getKey() + " invalid~0");

                }
                scores.add(score);
                continue;
            }
            boolean correct = question_AfterDelete.getAnswer().equals(userAnswer);
            score = correct ? entry.getValue() : 0;
            if(!userAnswer.equals(" ")){
                System.out.println(question_AfterDelete.getContent() + "~" + userAnswer + "~" + correct);
            }
            else{
                System.out.println(question_AfterDelete.getContent() + "~" + "~" + correct);
            }

            scores.add(score);
            totalScore += score;
        }
        String studentID= sheet.getStudentID();
        if(!studentID_student.containsKey(studentID)){
            System.out.println(studentID+" not found");
        }
        else {
            System.out.print(studentID_student.get(studentID).getStudentID() + " " + studentID_student.get(studentID).getStudentName());

                System.out.print(": " + scores.get(0));
                for (int i = 1; i < scores.size(); i++) {
                    System.out.print(" " + scores.get(i));
                }
                System.out.println("~" + totalScore);

        }
    }
}
  第三次的代码和第二次的代码相比较,基本框架是差不多的,但是因为第三次pta比第二次pta加了许多新东西,诸如错误警示,学生信息,删除题目信息之类的,因此其内容和对逻辑推理性的要求是极剧增加的,下面给出我的SourceMontor的生成报表内容以及PowerDesigner的相应类图,以便让你们可以对我的代码有更加直观的了解。

PowerDesigner的相应类图
SourceMontor的生成报表内容1
SourceMontor的生成报表内容2

  从PowerDesigner的相应类图中我们可以对代码的类之间的关系有一个较为清晰的认知,而从SourceMontor的生成报表内容可以看出我的代码数量和性能还是可以的

采坑心得

  当应对三次答题判定程序题目集时,经验告诉我要注意几个关键方面,以免掉入常见的陷阱。首先,理解题目要求至关重要。有时,题目会采用复杂的描述或隐含的条件,因此我务必仔细阅读,并确保完全理解题目要求,以免误解导致错误答案。其次,我会特别留意边界情况。编写代码或选择答案时,我会考虑各种可能的边界情况,如输入为空、边界值、异常情况等,以确保我的程序具有良好的健壮性。同时,我深知掌握相关知识的重要性。题目可能涉及广泛的知识领域,包括编程语言、算法和数据结构等,因此我需要具备扎实的基础知识,并能够灵活运用到实际问题中。在时间管理方面,我会合理安排时间,避免在某一道题上花费过多时间而影响整体进度。通常我会先解决易题,再着手处理难题。此外,我会特别注意审题准确。有时,题目会附带一些重要的提示或说明,我会认真阅读并理解,以免因忽略重要信息而导致错误。细节问题也十分重要。在编程题中,我会格外留意语法错误、变量命名、逻辑错误等细节,这些可能会导致程序出错。最后,我会充分利用各种资源。我可以借助参考书籍、在线教程、论坛等资源解决遇到的问题,但我会注意不要过度依赖,而是尽量独立思考和解决。综上所述,对于三次答题判定程序题目集,准备充分、认真审题、注意细节、合理利用时间等都是至关重要的。

改进建议

  1. 代码重构和优化:定期对题目集中的代码进行审查和重构,优化算法、改进代码结构和提高代码质量,以提升性能和可读性。

  2. 引入单元测试:为题目集中的代码引入单元测试,覆盖关键功能和边界情况,确保代码的正确性和稳定性,同时方便后续修改和优化。

  3. 版本控制和协作开发:使用版本控制工具(如Git)管理题目集的代码,便于多人协作开发、追踪修改历史和撤销不必要的更改。

  4. 持续集成和部署:建立持续集成和部署流程,自动化测试和部署过程,确保每次修改都能及时进行测试并部署到生产环境,提高代码交付效率和质量。

  5. 监控和反馈机制:引入监控和反馈机制,定期收集用户反馈和系统运行情况,及时发现和解决问题,不断改进题目集的质量和用户体验。

  6. 代码规范和审查:制定统一的代码规范,并进行定期的代码审查,确保代码风格一致,提高代码可维护性和可读性。

  7. 持续学习和更新:跟踪最新的编程技术和最佳实践,持续学习和更新题目集中的代码,保持其与时俱进,提供给用户最优质的学习资源。

  8. 反馈循环和改进机制:建立用户反馈循环和改进机制,及时响应用户需求和意见,根据反馈不断改进和优化题目集中的代码,以提高用户满意度和参与度。

总结

学到的内容:

  • 编程技能提升:通过解决各种类型的编程题目,我提高了编程能力,加深了对算法和数据结构的理解,学会了如何设计和实现高效的代码解决问题。

  • 问题解决能力:面对不同类型的题目,我学会了分析问题、理清思路、找出解决方案的能力,培养了解决复杂问题的信心和耐心。

  • 学习方法和技巧:在解题过程中,我尝试了各种学习方法和技巧,包括查阅资料、参考样例、与同学讨论等,逐渐形成了适合自己的学习方式。

  • 团队合作与交流:在解答题目过程中,我与同学们进行了讨论和合作,共同解决问题,学会了与他人合作、交流和分享经验的重要性。

进一步学习和研究的方向:

  • 深入学习算法和数据结构:尽管在本阶段学习了一些基础的算法和数据结构,但我希望能够进一步深入学习,掌握更多高级的算法和数据结构,提升解决问题的能力。

  • 提升编程技能:我希望能够不断提升自己的编程技能,学习更多的编程语言和开发工具,掌握更多实用的编程技巧,提高代码的质量和效率。

  • 加强实践经验:通过参与更多的编程项目和实践活动,我希望能够积累更多的实践经验,学会将理论知识应用到实际问题中解决。

  • 拓展领域知识:除了编程技能外,我也希望能够拓展其他领域的知识,如计算机网络、数据库、人工智能等,以便更全面地理解和应用计算机科学知识。

对教学及课程的改进建议:

  • 增加实践环节:在课程中增加更多的实践环节,让学生通过动手实践来巩固所学知识和技能,提高学习的深度和广度。

  • 提供更多资源和支持:为学生提供更多的学习资源和支持,包括教材、在线课程、实验室设施等,帮助他们更好地学习和成长。

  • 激发学生兴趣:设计更具吸引力和趣味性的课程内容和教学方法,激发学生的学习兴趣和主动性,提高学习效果和参与度。

  • 关注个性化需求:重视学生个性化的学习需求和能力差异,采用灵活多样的教学方式和评价方法,满足不同学生的学习需求。

对作业、实验、课上及课下组织方式的改进建议:

  • 合理安排作业和实验:合理安排作业和实验的内容和难度,使之与课程内容和学生能力相匹配,既巩固了所学知识,又能够激发学生的学习兴趣。

  • 注重课上互动:注重课堂互动和学生参与,采用启发式教学方法和案例分析,引导学生思考和讨论,提高课堂效率和学习效果。

  • 提供课下学习资源:为学生提供丰富多样的课下学习资源,如在线学习平台、学习指导、参考书籍等,帮助他们巩固所学知识和拓展学习范围。

  • 定期反馈和评估:定期对学生的学习情况进行反馈和评估,及时发现和解决问题,调整教学策略和内容,保持教学的有效性和前进性。

标签:String,答题,int,Blog,判定,answer,new,line,public
From: https://www.cnblogs.com/3324407318-qq/p/18146927

相关文章

  • 答题判题程序1~3总结
    一.前言第一次作业知识点、题量、难度总结1.第一次作业的主要内容为:输入题目信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。其中输入的信息主要为:题目数量,题目内容,答题信息,以"end"结束输入。要求输出答题信息和判题信息。2.主要涉及到的知识点:(1)面向对象编程:......
  • JAVA学习第一次Blog
    前段时间老师在PTA上发布了三次大作业,这几次大作业的难度都比较高,对我来说除了前面的题目,最后的大分数压轴题我每次都做不出来。这与上个学期学的C语言作业难度简直不是一个等级的,不过JAVA老师也在上课期间一直强调,“我们JAVA课程一定要做出改变,不能说怕学生挂科就把难度设置的很......
  • 第一次blog总
    一、前言:第一次pta作业:1.知识点:简单的类的设计,类和对象的使用,类的数组类型的基本应用,类间的关联等基础的类间关系设计,实现对类的封装等操作。2.题量:4道简单题,1道迭代的难题。3.难度:前4道题比较简单;最后一道第一次写难度较大。第二次pta作业:1.知识点:考察类实现Comparable......
  • 三次答题判题程序练习让你入门Java。
    (1)前言本阶段三次题目集涵盖了从基础编程概念到较复杂算法设计等多个知识点。题量适中,难度呈梯度上升,从简单的数据结构与算法实现到复杂的问题求解,逐步挑战学生的编程能力。第一次题目集主要考察基本语法、数据类型和简单的控制结构;第二次题目集则增加了数组、链表等数据结构的应......
  • 第一次Blog
    前言第一次题目集是对类的设计,类与对象的使用和类与数组关联类的考察。第二次题目集是类与对象之间的创建以及运用的考察。第三次题目集是对类的封装性以及Java自带时间包的运用的考察。总而言之,三次题目集的题目量并不算大,题目集的难度也是比较中等。设计与分析这是答题......
  • 第一次OOPBlog
    PTA也写过了三次作业了,虽然很遗憾都没有拿到满分,不过在练习的过程中也很直观的学到了一点:做题不能因为不会就轻易放弃,要学会钻研。借着这次机会,好好的和之前的自己“算个帐”。首先是第一次作业中:1.涉及到了对象的包装,即面向对象的程序的三大技术之一,如:设计一个风扇类:点击查......
  • PTA三次题目集总结性Blog
    (1)前言1.第一次题目集知识点主要涉及类的设计和实现、构造方法的使用、成员变量和访问器/修改器的定义、方法的重写(toString方法)、对象的创建和调用方法、控制台输入和输出的使用、浮点数的格式化输出等,题量比较适中,难度也比较适中,要求实现的功能较为基础,但需要一定的类设计和方......
  • 关于发布题目集1~3的总结性Blog
    前言:这几次关于答题判题程序是通过从键盘中输入提取出对应的信息(比如说题目,试卷,答卷等等)然后再进行逐一判断。从中考查的知识点是正则表达式的运用,加上了split函数的运用,类的数组运用等等。主要的还是这三点。由于一直的迭代,导致最终它的题目要求越来越多,导致难度直线上升。也从8......
  • 题目集1~3的总结性Blog
    一、前言第一次题集知识点主要是掌握类和对象的使用创建,以及类与类之间的关系,还有正则表达式的运用,动态数组ArrayList类的使用,以及方法。这一次的题集难度不是很大,因为是第一次所以来说题量有点大。也是艰难完成了。第二次题集知识点与第一次的类似主要还是对正则表达式的使......
  • blog1
    1前言1.1知识点总结(1)在题目集1里分别有类与对象的使用(包括方法的定义(void方法,int类型返回等等)与属性的定义(例如整形,布尔型的定义等等),如何对类与对象进行引用(使用new创建一个新类,并进行有参构造或无参构造对类里的属性进行赋值))(2)类与类之间的引用,包括方法之间的互相调用(包括一个......