我的第三次oop

news/2024/7/5 3:15:31/文章来源:https://www.cnblogs.com/CJ-05/p/18276226

阅读目录

前言

第四次PTA

第五次PTA

第六次PTA

总结

前言

一:对于java的进一步认识

Java是一种强大、跨平台的编程语言,它以面向对象为核心,拥有自动内存管理、丰富的API和广泛的社区支持。Java的广泛应用领域包括Web开发、移动应用开发、企业级应用以及大数据处理等,其易用性和高性能使得它成为现代软件开发的首选之一。

二:对于三次PTA的理解

1.第四次PTA的作业是答题判题的最后一次迭代了,就证明了基本上它已经被完善了,难度也来到了这道题的最高处。
2.第五次PTA的作业是新的一次迭代的大类题了,肯定的第一次嘛,相对的是都会简单一点的,主要是起一个带我们进入这道大题的作用。
3.第六次PTA的作业进一步加大了这道题的难度,导致有很多同学都放弃了,无作为(虽然我也不是很好,但是我至少努力到了最后一刻)。

第四次PTA

设计与分析

这次作业是答题判题的最后一次PTA了也就是完善版了(虽然看的出来其实这道题的迭代还没有到最完善的地步,但他确实是答题判题的最后一次作业了,有可能是因为有学生反应太难了吧)、

以下是我这次作业类的设计
Question类(这是个父类):

只是简单的定义了子类的共同属性。
Question1类(子类):

Question2类(子类):

Question3类(子类):

以上是关于Question的所用
Student类:

StudentAnswer类:(代码有点长就发代码)

点击查看代码
class StudentAnswer{private int num;private String id;private int[] questionNum = new int[100];private String[] questionAnswer = new String[100];public StudentAnswer(){}public StudentAnswer(int num, String id, int[] questionNum, String[] questionAnswer){this.num = num;this.id = id;this.questionNum = questionNum;this.questionAnswer = questionAnswer;}public int getNum(){return num;}public String getId(){return id;}public int[] getQuestionNum(){return questionNum;}public String[] getQuestionAnswer(){return questionAnswer;}public void setNum(int num){this.num = num;}public void setId(String id){this.id = id;}public void setQuestionNum(int[] questionNum){this.questionNum = questionNum;}public void setQuestionAnswer(String[] questionAnswer){this.questionAnswer = questionAnswer;}public int getaAllQuestionNum(){int n;for(n = 0; n < 100; n++){if(getQuestionNum()[n] == 0){return n;}}return 0;}
}

Test类:

点击查看代码
class Text{private int textNum;private int[] questionNum = new int[100];private int[] questionScore = new int[100];public Text(){}public Text(int textNum, int[] questionNum, int[] questionScore){this.textNum = textNum;this.questionNum = questionNum;this.questionScore = questionScore;}public int getTextNum(){return textNum;}public int[] getQuestionNum(){return questionNum;}public int[] getQuestionScore(){return questionScore;}public void setTextNum(int textNum){this.textNum = textNum;}public void setQuestionNum(int[] questionNum){this.questionNum = questionNum;}public void setQuestionScore(int[] questionScore){this.questionScore = questionScore;}public int getaAllQuestionNum(){int n;for(n = 0; n < 100; n++){if(getQuestionNum()[n] == 0){return n;}}return 0;}
}

Delete类:

allJudgment类:
这个类是基本上所有判断方法的集合,有点长,我一点一点的说明。

这个是所有类的关联。

点击查看代码
    public int questionErrorJudgment(int questionNum){for(int i = 0; i < kindNum.getNum()[2]; i++){if(question[i].getErrorNum() == questionNum){System.out.println("non-existent question~0");return 0;}}return 1;}public int questionAndDeleteJudgment(int questionNum){int n = 0;for(int i = 0; i < kindNum.getNum()[2]; i++){if(delete[i].getQuestionNum() == questionNum){System.out.println("the question " + questionNum + " invalid~0");return 0;}}return 1;}public int questionAndTextJudgment(int questionNum, int textNum){int n = 0;for(int i = 0; i < studentAnswer[textNum-1].getaAllQuestionNum(); i++){if(studentAnswer[textNum-1].getQuestionNum()[i] != questionNum){n++;}}int m = 0;for(int i = 0; i < kindNum.getNum()[0]; i++){if(question[i + 1].getQuestionNum() != questionNum){m++;}}if(n == studentAnswer[textNum-1].getaAllQuestionNum() && m == kindNum.getNum()[0]){System.out.println("non-existent question~0");return 0;}return 1;}public void studentAndAnswerJudgment(){int x = 0, y = 0, z = 0, n = 0, a = 0;int score = 0;for(int i = 0; i < kindNum.getNum()[1]; i++){for(int j = 0; j < kindNum.getNum()[4]; j++){if(studentAnswer[i].getNum() == text[j].getTextNum()){int[] error = new int[text[i].getaAllQuestionNum()];for(int k = 0; k < text[i].getaAllQuestionNum(); k++){x = 0;a = questionAndTextJudgment(text[i].getQuestionNum()[k],text[j].getTextNum());for(int l = 0; l < studentAnswer[j].getaAllQuestionNum(); l++){if(text[i].getQuestionNum()[k] == studentAnswer[j].getQuestionNum()[l]){y = questionAndDeleteJudgment(text[i].getQuestionNum()[k]);z = questionErrorJudgment(text[i].getQuestionNum()[k]);if (y == 1&&z == 1) {for(int t = 0; t < kindNum.getNum()[0]; t++){if(question[t + 1].getQuestionNum() == text[i].getQuestionNum()[k]){System.out.print(question[t + 1].getQuestion() + "~" + studentAnswer[j].getQuestionAnswer()[l] + "~");}}if(studentAnswer[j].getQuestionAnswer()[l].equals(question[text[i].getQuestionNum()[k]].getAnswer())){System.out.println("true");score += text[i].getQuestionScore()[studentAnswer[j].getQuestionNum()[l]-1];error[text[i].getQuestionNum()[k] - 1] = 1;}else if (question[text[i].getQuestionNum()[k]].getAnswer().contains(studentAnswer[j].getQuestionAnswer()[l])){System.out.println("partially correct");score += text[i].getQuestionScore()[studentAnswer[j].getQuestionNum()[l]-1] / 2;error[text[i].getQuestionNum()[k] - 1] = 2;}else{System.out.println("false");error[text[i].getQuestionNum()[k] - 1] = 0;score += 0;}}}else{x++;}}if(x == studentAnswer[j].getaAllQuestionNum()&&y == 1&&a == 1){System.out.println("answer is null");score += 0;}}System.out.print(studentAnswer[j].getId() + " ");for(n = 0; n < kindNum.getNum()[3]; n++){if(studentAnswer[j].getId().equals(student[n].getId())){System.out.print(student[n].getName() + ": ");for(int m = 0; m < text[i].getaAllQuestionNum(); m++){if((m + 1) == text[i].getaAllQuestionNum()){if(error[m] == 0){System.out.println("0~" + score);}else if(error[m] == 1){System.out.println(text[i].getQuestionScore()[text[i].getQuestionNum()[m]-1] + "~" + score);}else{System.out.println(text[i].getQuestionScore()[text[i].getQuestionNum()[m]-1] / 2 + "~" + score);}}else{if(error[m] == 0){System.out.print("0 ");}else if(error[m] == 1){System.out.print(text[i].getQuestionScore()[text[i].getQuestionNum()[m]-1] + " ");}else{System.out.print(text[i].getQuestionScore()[text[i].getQuestionNum()[m]-1] / 2 + " ");}}}break;}}if(n == kindNum.getNum()[3]){System.out.println("not found");}}}}}

这是大部分的判断方法,还有的在Main里。
Main类:

点击查看代码
    public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = 0;int[] topic1 = new int[100];int[] score1 = new int[100];String question = new String();String answer1 = new String();int[] questionNum = new int[100];String[] questionAnswer = new String[100];Question[] questions = new Question[100];Text[] text = new Text[100];Student[] students = new Student[100];Delete[] delete = new Delete[100];StudentAnswer[] studentAnswers = new StudentAnswer[100];for (int i = 0; i < 100; i++) {questions[i] = new Question();text[i] = new Text();students[i] = new Student();delete[i] = new Delete();studentAnswers[i] = new StudentAnswer();}int num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0;int j = 0, k = 0, l = 0;while(true){String all = sc.nextLine();if(all.equals("end"))break;if(all.charAt(1) == 'N'){String[] textDelete = all.split("#N:| ");int c = Integer.parseInt(textDelete[1]);String regex = ("^#N:\\s*(\\d+) #Q\\s*:(.+) #A:\\s*(.+)");Question question1 = new Question1();if(all.matches(regex)){Pattern pattern1 = Pattern.compile(regex);Matcher matcher = pattern1.matcher(all);if (matcher.find()){m = Integer.parseInt(matcher.group(1).trim());question = matcher.group(2).trim();answer1 = matcher.group(3).trim();num1++;}question1.setQuestionNum(m);question1.setQuestion(question);((Question1)question1).setAnswer(answer1);questions[m] = question1;}else{System.out.println("wrong format:" + all);question1.setErrorNum(c);}}if(all.charAt(1) == 'T'){int score = 0;String[] textPaper = all.split("#T:| |-");m = Integer.parseInt(textPaper[1]);for(int i = 2; i < textPaper.length; i++){if(i % 2 == 1){score1[j] = Integer.parseInt(textPaper[i]);score += score1[j];j++;}if(i % 2 == 0){topic1[k] = Integer.parseInt(textPaper[i]);k++;}}if(score != 100){System.out.println("alert: full score of test paper" + m + " is not 100 points");}text[num2].setTextNum(m);text[num2].setQuestionNum(topic1);text[num2].setQuestionScore(score1);num2++;}if(all.charAt(1) == 'D'){String[] textDelete = all.split("#D:N-| |N-");m = Integer.parseInt(textDelete[1]);delete[num3].setQuestionNum(m);num3++;}if(all.charAt(1) == 'X'){String[] studentID = all.split("#X:| |-");for(int i = 1; i < studentID.length; i = i + 2){String studentId = studentID[i];String studentName = studentID[i+1];students[num4].setId(studentId);students[num4].setName(studentName);num4++;}}if(all.charAt(1) == 'S') {String[] studentPaper1= all.split("#S:| #A:");String[] studentPaper2= studentPaper1[1].split(" ");m = Integer.parseInt(studentPaper2[0]);String ID = studentPaper2[1];for(int z = 2; z < studentPaper1.length; z++){String[] studentPaper3= studentPaper1[z].split("-");questionNum[l] = Integer.parseInt(studentPaper3[0]);questionAnswer[l] = studentPaper3[1].trim();l++;}studentAnswers[num5].setNum(m);studentAnswers[num5].setId(ID);studentAnswers[num5].setQuestionNum(questionNum);studentAnswers[num5].setQuestionAnswer(questionAnswer);num5++;}if(all.charAt(1) == 'Z') {String[] questionAndAnswer1 = all.split("#Z:| #A:| #Q:");m = Integer.parseInt(questionAndAnswer1[1]);String questionMuch = questionAndAnswer1[2];String answerMuch = questionAndAnswer1[3];Question question2 = new Question2();question2.setQuestionNum(m);question2.setQuestion(questionMuch);((Question2)question2).setAnswer(answerMuch);questions[m] = question2;num1++;}if(all.charAt(1) == 'K') {String[] questionAndAnswer2 = all.split("#K:| #A:| #Q:");m = Integer.parseInt(questionAndAnswer2[1]);Question question3 = new Question3();question3.setQuestionNum(m);question3.setQuestion(questionAndAnswer2[2]);((Question3)question3).setAnswer(questionAndAnswer2[3]);questions[m] = question3;num1++;}}int[] num = new int[5];num[0] = num1;num[1] = num2;num[2] = num3;num[3] = num4;num[4] = num5;allKindNum kindNum = new allKindNum(num);allJudgment judgment = new allJudgment(questions,text,students,delete,studentAnswers,kindNum);judgment.studentAndTextJudgment();judgment.studentAndAnswerJudgment();}
}

PowerDesigner输出例如:

可以看出答题判题的最后一次作业的类图还是挺复杂的。
下面是SourceMonitor的测试结果:

而这也就是这道题最后的表现了。

代码我就不一步一步的分析了主要是时间有点久远了,现在在去看这些代码太耽误时间了,就自行判断,本人就只做最后的总结和反思了。
!!!以上代码皆为不完全正确代码仍有许多问题需要处理。!!!(好难!)

踩坑心得

1.如上一次所说的,将这类题吃透,显然我还是没有做到,依旧只是达到了合格的水平远远达不到掌握的程度。
2.正如上一次所答的一样这次的PTA我在很早是就和同学一起讨论了只不过,碍于自己想标新立异的思想下,未完成此任务。
3.这次考虑到在#~之前是可以输入如何东西的,但是不会报输入格式错误的问题,但是又有了新的问题的出先,新的问题总是出行和被解决中,旧的问题还在堆积中。
4.有了前几次的经验,这次在理解时是透彻了,可以理解很多情况是什么样子的,但是自己的想法实现起来又显得十分冗杂,导致的代码的可读性不高,总是在用最基础的知识去解决复杂的问题,这就很难受了。

改进建议

1.下次的PTA要早做打算,是新的一次迭代了,相对的,第一次的难度是不高的,争取取得高分。
2.和同学讨论并不是抄袭,而是你们一起解决问题,这种技能的培养是十分重要的,这有助于在我们今后的日常生活中提高我们的办事效率。
3.在课下的闲暇时间里加强对java的学习,更加熟悉java的使用。

第五次PTA

设计与分析

这次是新的作业的迭代了
以下是类的分析
Device类:(抽象类)

ElectricalAppliance类:(抽象类)

Control类:(抽象类)

Switch类:


Fan类:

IncandescentLamp类:

FluorescentLamp类:

BinningGovernor类:

ContinuousGovernor类:

Mian类。
分析:
其中ElectricalAppliance类和Control类是Device类的子类;
Switch类、BinningGovernor类和ContinuousGovernor类是Control类的子类;
最后FluorescentLamp类、IncandescentLamp类和Fan类是ElectricalAppliance类的子类。
PowerDesigner输出例如:

看的出第一的迭代类图还是比较简单的,但相对的不第一次的PTA难度还是上升了的。
接下来的是SourceMonitor的测试结果:

输入是全部放在Main类中了,代码如下:

点击查看代码
    public static void main(String[] args){Scanner sc = new Scanner(System.in);int num1 = 0,num2 = 0;int n = 0;double gears = 0, voltage = 0;String all = "";String[] device = new String[100];while (true){all = sc.nextLine();if(all.equals("end"))break;if(all.charAt(0) == '['){String all1 = "";Pattern pattern = Pattern.compile("\\[(.+)\\]");Matcher matcher = pattern.matcher(all);while (matcher.find()) {all1 = matcher.group(1);}String[] all2 = all1.split(" |-");if(all2[0].charAt(0) == 'V'){voltage = 220;device[n] = all2[1];n++;continue;}device[n] = all2[2];n++;if(all2[2].charAt(0) == 'G'&&n > 1){device[n] = all2[0];continue;}}if(all.charAt(0) == '#'){if(all.charAt(1) == 'K'){num1++;}if(all.charAt(1) == 'F'){if(all.charAt(3) == '+'){num2++;}elsenum2--;}if(all.charAt(1) == 'L'){String[] lian = all.split("#L|:");gears = Double.parseDouble(lian[2]);}}}ArrayList<Device> devices = new ArrayList<>();for(int i = 0; i < n; i++){if(device[i].charAt(0) == 'K'){Switch aSwitch = new Switch(device[i],1,2);for (int j = 0; j < num1; j++) {aSwitch.changeState();}devices.add(aSwitch);}if(device[i].charAt(0) == 'F'){BinningGovernor binningGovernor = new BinningGovernor(device[i],1,2);if(num2 >= 4){num2 = 3;}if(num2 < 0){num2 = 0;}binningGovernor.setGears(num2);devices.add(binningGovernor);}if(device[i].charAt(0) == 'L'){ContinuousGovernor continuousGovernor = new ContinuousGovernor(device[i],1,2,gears);devices.add(continuousGovernor);}if(device[i].charAt(0) == 'B'){IncandescentLamp incandescentLamp = new IncandescentLamp(device[i],1,2);devices.add(incandescentLamp);}if(device[i].charAt(0) == 'R'){FluorescentLamp fluorescentLamp = new FluorescentLamp(device[i],1,2);devices.add(fluorescentLamp);}if(device[i].charAt(0) == 'D'){Fan fan = new Fan(device[i],1,2);devices.add(fan);}}for (int i = 0; i < devices.size(); i++) {if(devices.get(i) instanceof Control){voltage = ((Control)devices.get(i)).computeVoltage(voltage);devices.get(i).toPrintln(voltage);}}for (int i = 0; i < devices.size(); i++) {if(devices.get(i) instanceof Control){continue;}devices.get(i).toPrintln(voltage);}}

代码是有点侥幸的心理在里面的,所以代码是有一点长的。

踩坑心得

1.因为是第一次迭代,题目难度不算很大,只是题目理解上还是有点不清楚,在同学的帮助下才最终理解的。
2.写作业的时间有点晚了,时间也不太充足,所以最后也没有到满分,差了三分,但是这三分是知道该怎么改的,但是有点多,复杂,所以就没有再花时间在这个上面了。

改进建议

1.下次的PTA要早一点着手准备开始写了,不能再像这次的一样,急急忙忙的写了,时间肯定是不够的。
2.多问问同学,一起讨论讨论,进步会更快。
3.java的这个作业PTA的难度还是有点,尽力去做吧。

第六次PTA

设计与分析

这次的迭代怎么说呢,感觉难度其实并没有加大多少,感觉是可以拿捏它的,结果最后反被拿捏了。
所建类分析:
Device类:(抽象类)

ElectricalAppliance类:(抽象类)

Control类:(抽象类)

Switch类:


Fan类:

IncandescentLamp类:

FluorescentLamp类:

BinningGovernor类:

ContinuousGovernor类:

FloorFan类:

Concatenation类:

点击查看代码
class Concatenation {//串联private ArrayList<ParallelConnection> parallelConnection ;private ArrayList<String> device = new ArrayList<>();public Concatenation() {}public Concatenation(ArrayList<ParallelConnection> parallelConnection, ArrayList<String> device) {this.parallelConnection = parallelConnection;this.device = device;}public ArrayList<String> getDevice() {return device;}public void setDevice(ArrayList<String> device) {this.device = device;}public void setParallelConnection(ArrayList<ParallelConnection> parallelConnection) {this.parallelConnection = parallelConnection;}public ArrayList<ParallelConnection> getParallelConnection() {return parallelConnection;}public double totalResistance(ArrayList<String> aSwitches,int[] num) {double resistance = 0;for (int i = 0; i < device.size(); i++) {switch (device.get(i).charAt(0)){case 'K':resistance = resistance + 0;break;case 'B':resistance = resistance + 10;break;case 'R':resistance = resistance + 5;break;case 'D':resistance = resistance + 20;break;case 'A':resistance = resistance + 20;break;case 'M':resistance = resistance + ShuntResistance(aSwitches,num);break;default:break;}}return resistance;}public double ShuntResistance(ArrayList<String> aSwitches,int[] num){double resistance = 0, resistance1 = 0;for (int i = 0; i < parallelConnection.size(); i++) {resistance += 1/parallelConnection.get(i).totalResistance(aSwitches,num);}resistance1 = 1/resistance;return resistance1;}public double TributaryVoltage(ArrayList<String> aSwitches,int[] num){double voltage = 0;voltage = 220*(ShuntResistance(aSwitches,num)/totalResistance(aSwitches,num));return voltage;}public double MainVoltage(ArrayList<String> aSwitches,int[] num){double voltage = 0;voltage = 220 - TributaryVoltage(aSwitches,num);return voltage;}public void ToPrintln(ArrayList<String> aSwitches,int[] num){ArrayList<String> device1 = new ArrayList<>();int i,j,k;for (i = 0; i < device.size(); i++) {if(device.get(i).charAt(0) == 'M')continue;device1.add(device.get(i));}for (j = 0; j < parallelConnection.size(); j++) {for (k = 0; k < parallelConnection.get(j).getDevice().size(); k++) {device1.add(parallelConnection.get(j).getDevice().get(k));}}char[] type = {'K','F','L','B','R','D','A'};for (int l = 0; l < type.length; l++) {for (int m = 0; m < device1.size(); m++) {if(device1.get(m).charAt(0) == type[l]){}}}}
}

ParallelConnection类:

点击查看代码
class ParallelConnection{//并联类private ArrayList<String> device = new ArrayList<>();public ParallelConnection() {}public ParallelConnection(ArrayList<String> device) {this.device = device;}public ArrayList<String> getDevice() {return device;}public void setDevice(ArrayList<String> device) {this.device = device;}public double totalResistance(ArrayList<String> aSwitches,int[] num) {ArrayList<Device> devices = new ArrayList<>();double resistance = 0;int n = 0;for (int i = 0; i < device.size(); i++) {switch (device.get(i).charAt(0)){case 'K':n = 0;Switch aSwitch = new Switch();for (int j = 0; j < aSwitches.size(); j++) {if(device.get(i).equals(aSwitches.get(j))){aSwitch = new Switch(device.get(i),1,2,num[j]);resistance = resistance + 0;n = 1;}}if(n == 1){aSwitch = new Switch(device.get(i),1,2,0);resistance = resistance + 0;}devices.add(aSwitch);if (aSwitch.changeState() == 0){n = 2;}break;case 'B': resistance = resistance + 10;break;case 'R':resistance = resistance + 5;break;case 'D':resistance = resistance + 20;break;case 'A':resistance = resistance + 20;break;default:break;}if (n == 2) {resistance = 0;break;}}return resistance;}
}

Mian类。
其中ElectricalAppliance类和Control类是Device类的子类;
Switch类、BinningGovernor类和ContinuousGovernor类是Control类的子类;
最后FluorescentLamp类、IncandescentLamp类、Fan类和FloorFan类是ElectricalAppliance类的子类。
Concatenation类和ParallelConnection类是独立出来的单独类,与其他类关联,其电路作用。
PowerDesigner输出例如:

因为一部分的原因,类图看着反而更加简单了,实际上一个会更加复杂才对。
接下来的是SourceMonitor的测试结果:

输入是全部放在Main类中了,代码如下:

点击查看代码
    public static void main(String[] args){Scanner sc = new Scanner(System.in);ArrayList<String> aSwitches = new ArrayList<>();ArrayList<String> aSwitch = new ArrayList<>();ArrayList<String> circuit2 = new ArrayList<>();ArrayList<ParallelConnection> parallelConnections = new ArrayList<>();Concatenation concatenation = new Concatenation();int num1 = 0,num2 = 0;int n = 0,m = 0;double gears = 0;String all = "";while (true){all = sc.nextLine();if(all.equals("end")){break;}if(all.charAt(1) == 'T'){String circuit1 = "";String regex = "\\[([^\\]]+)\\]";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(all);int i = 1;while (matcher.find()) {circuit1 += matcher.group(1) + " ";}String[] circuit = circuit1.split("IN |-| OUT| ");circuit[0] = String.valueOf(all.charAt(2));ArrayList<String> device = new ArrayList<>();for(int j = 0; j+3< circuit.length; j=j+4){device.add(circuit[j+3]);}if(circuit1.charAt(0) == 'I' ){ParallelConnection temp = new ParallelConnection();temp.setDevice(device);parallelConnections.add(temp);}if(circuit1.charAt(0) == 'V'){concatenation.setDevice(device);concatenation.setParallelConnection(parallelConnections);}}if(all.charAt(1) == 'M'){Pattern pattern1 = Pattern.compile("#M1:\\[([\\S]+)\\s+([\\S]+)\\]");Matcher matcher1 = pattern1.matcher(all);if (matcher1.find()) {circuit2.add(matcher1.group(1));circuit2.add(matcher1.group(2));}}if(all.charAt(1) == 'K'){String[] switch1 = all.split("#");aSwitches.add(switch1[1]);}if(all.charAt(1) == 'F'){if(all.charAt(3) == '+'){num2++;}elsenum2--;}if(all.charAt(1) == 'L'){String[] lian = all.split("#L|:");gears = Double.parseDouble(lian[2]);}}int[] numK = new int[aSwitches.size()];aSwitch.add(aSwitches.get(0));numK[0] = 1;for (int i = 0; i < aSwitches.size(); ) {n = 1;for (int j = i + 1; j < aSwitches.size(); j++) {if(aSwitches.get(i).equals(aSwitches.get(j))){for (int k = 0; k < aSwitch.size(); k++) {if(aSwitch.get(k).equals(aSwitches.get(j))){numK[k]++;n++;}}}else{for (int k = 0; k < aSwitch.size(); k++) {if(!aSwitch.get(k).equals(aSwitches.get(j))){aSwitch.add(aSwitches.get(j));numK[k+1] = 1;break;}}break;}}if(n != 0){i = i + n;}else {i++;}}concatenation.ToPrintln(aSwitches,numK);}

提示:这道题的代码很low,应该狠狠的反思自己。

踩坑心得

1.因为没有处理好电器的名字和创建数数据的关系,导致的之后在使用的时候会很麻烦,会显得代码很难看,很垃圾。
2.在本人尽力的拯救和抢救下,悬着的心终于死了。

3.下次的作业一定要将电器名字和电器的类联系处理好,要将电器跟着代码走不能等到最后再来处理。

改进建议

1.下次的PTA要再想好了类图之间的关系和建立数组再去开始写,不能随便就开始,想到什么就写什么,这遇见简单的编程还好,但是如果遇见了复杂的或者说遇见了像作业一样的迭代的话会很麻烦,基本上每次都需要重新思考,会浪费很多时间,一定要有大体的思路了再去写 。
2.PTA的难度是有的,如果你想拿到高分的话就一定是要付出努力和汗水的,不能随随便便就了事了。

总结

1.PTA的难度是有的,如果你想拿到高分的话就一定是要付出努力和汗水的,不能随随便便就了事了。
2.三次题集的难度是有目共睹的,不能像第一次一样按照自己的想法随便编写,需要严格按照要求来,有自己的想法固然是好事,但一定是要在要求下才可以,用得好是锦上添花,否则就变成了不按照规则办事,适得其反,一定要循规蹈矩的一步一步的往前走。
3.如果以后有机会遇见迭代的题时,一定要一步一步走踏实了,建好基础才可以在后面的题目中走的更远,爬的更高。
4.理论上来说一道题类建的越多就应该越简单,但是还是要根据题目来建立,不管任何盲目的建立只会使代码更加混乱。
5.类一定要履行单一职责原则这样会使代码更加清晰明了,不至于将自己写昏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/734124.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三次oop

阅读目录 前言 第四次PTA 第五次PTA 第六次PTA 总结 前言 一:对于java的进一步认识 Java是一种强大、跨平台的编程语言,它以面向对象为核心,拥有自动内存管理、丰富的API和广泛的社区支持。Java的广泛应用领域包括Web开发、移动应用开发、企业级应用以及大数据处理等,其易用…

[算法学习笔记] 树链剖分(重链剖分)

树链剖分(重链剖分)学习笔记概述 树链剖分能将一棵树剖分成若干条链的形式。从而能在树上用一些线性数据结构如线段树,树状数组等维护。树链剖分分为重链剖分,长链剖分,LCT 剖分等。最常用的是重链剖分。本文将讲解重链剖分。 本文将持续更新。 我们接下来给出一些定义。重…

.net8,全网首发:部署为自带环境的前后端分离项目,编译成二进制机器码,防止反编译

环境:win10+.net8+vs2022+vue3(history路由模式)本文只演示在winows上面的部署 目的: 1.防止反编译,增加破解成本 2.更便捷的部署方式,开箱即用 实现: 1.不依赖容器,包括IIS,apache,docker,nginx等 2.更少的文件,所有dll逻辑打包成一个exe文件(如果是win环境是exe…

第7-8次大作业总结

前言: 第七次大作业: 这次大作业中新增了,两个新部件,一个是互斥开关,一个是受控窗帘,互斥开关意味着要用一个电器同时参与两条电路的构建,刚开始我没想好怎么去实现一个电器对两条支路,输出不同的状态,后来想到,不如直接把两个普通开关作为互斥开关的两个属性,把它…

配置自己的免费云主机,阿贝云,免费虚拟主机,免费云服务器

延期需要您在第三方网站发布使用感受,以下是对发布内容的详细要求: (1)比较推荐免费免费云主机,阿贝云,免费虚拟主机,免费云服务器 (2)“阿贝云”"免费虚拟主机"“免费云服务器”,配置使用比较方便简单,正在尝试更多功能,后续使用后再来继续发表 (3)可以…

OOP 7-8总结

oop 7~8总结 前言知识点 整体的知识点与前几次的题目没有太多的不同,每次迭代因为题目要求都有增加,所以会新增一些做法,但是像是继承、集合框架、正则表达式、抽象类、多态以及接口等知识点依然会重复使用,只是用法会不同。 越写到后面我越是意识到算法的重要性。在题目里…

家居强电电路模拟程序的两次迭代(包含最终版本)

目录: 一)前言 二)设计与分析 三)踩坑心得 四)改进建议 五)总结 (2)家居强电电路模拟程序-3: 【1】知识点:ArrayList的运用,物理知识的运用。 【2】题量:较大 【3】难度:较难 在家居强电电路模拟程序的迭代中引出较难的互斥开关 (3)家居强电电路模拟程序-4: 【1】…

免费的数据可视化(PCA、t-SNE和UMAP)网页程序

这是一款免费的数据可视化(PCA、t-SNE和UMAP)网页程序,直接进行在线操作,无需下载。这是一款免费的数据可视化网页程序,直接进行在线操作,无需下载。 URL: https://data-visualization-webapp-by-shuaibingli.streamlit.app/ 总体页面【预处理+可视化(PCA、t-SNE和UMAP)+保…

养老院视频监控智能分析系统

养老院视频监控智能分析系统为养老院提供先进的视频监控智能分析技术手段,构建养老智慧监控和安全智能分析防范体系,用科技手段弥补传统方法和技术在监管中的缺陷,变被动“监督”为主动“监控”。致力于打造智慧养老院,打造人性化托养、智能化运营管理,为各大养老机构减少…

关于nchu题目集7~8的总结

关于nchu题目集7~8的总结 一、前言 总结两次题目集的题目的知识点、题量、难度等情况 二、内容[题目[1]](##第三次题目(简略版)) [代码[2]](##我的代码) [设计与分析[3]](##设计与分析) [踩坑心得[4]](##踩坑心得) [改进建议[5]](##改进建议)题目集8最后一题(简略版)1、控制…

springboot+vue前后端分离项目-vue项目搭建5

1.改造登录vue/src/views/LoginView.vue,登陆后存储user信息到sessionStorage,进入到login页面移除sessionStorage里的user 2.改造vue/src/components/Header.vue,从sessionStorage中获取user,每个人登陆后根据个人信息显示名称 3.增加vue/src/views/Person.vue,点击个人信…

生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)

前言:今天演示下生产环境keepalived的部署方式,安装模式有很多,比如说主备模型和双主模型,主备分:抢占模式 和 非抢占模式。这里我会一一展开说具体怎么配置 一、双节点均部署Nginx: 第一步:上传安装包到/usr/local/ 第二步:安装编译依赖(使用普通用户需要家sudo) yu…

无业游民写的最后一个.net有关项目框架

理想很丰满,现实往往很残酷。 一种按照ddd的方式,根据业务来把自己需要的模块一个一个写出来,再按照模块把需要的接口一个一个的写出来,堆砌一些中间件,以及解耦的command,handler等等 ,一个项目就这么成型了。上面的项目有一个非常清晰的特点,就是按需开发,不需要去可…

OOP第三次Blog

前言: (1) 第七次题集只有一道题目——家居强电电路模拟程序-3,这是第三次迭代,这次迭代主要的点有四个。 ​ 首先本次迭代添加了线路中存在多个串联起来的并联电路。不同于上次的单并联,本次更复杂。 ​ 然后本次还新迭代了一种控制器——互斥开关,互斥…

23201829OO第三次blog作业

OO第三次blog作业 前言 这次blog是本学期最后一次回顾总结,本次blog的范围是“家居强电电路模拟程序”的第三和第四次迭代,分别加入了互斥开关、窗帘的概念、多个串联起来的并联电路、串联电路中包含其他串联电路的情况和串联电路中包含串联电路的情况和二极管。因此这两次PT…

企业做账流程详解

都说会计月底很忙,那究竟都在忙什么呢,一起来看看吧

快速提取视频字幕!适用B站、AI字幕等等。好用

快速提取视频字幕!适用B站、AI字幕等等。好用 以B站为例: 视频教程:快速提取视频字幕!适用B站、AI字幕!非常好用_哔哩哔哩_bilibili 无论是视频的字幕,还是AI字幕,都可以提取。比较简单。 首先好像需要确定 视频的字幕还是AI字幕。如果是视频字幕,下面F12之后,输入的是…

Ymodem协议说明

Ymodem流程介绍1.Ymodem帧格式 Ymodem两种帧格式: 1024数据格式帧:名称 帧头 包号 包号反码 信息块 校验简写 SOH PN XPN DATA CRC字节数 1 1 1 128 2128数据格式帧:名称 帧头 包号 包号反码 信息块 校验简写 STX PN XPN DATA CRC字节数 1 1 1 1024 21.1 帧头 帧头一个有两…

CentOS7.9部署Nginx

简介 本章节主要讲的是在Linux系统CentOS7.9上去完成Nginx Web服务安装部署 步骤 1.配置 Nginx 源 2.yum 安装 Nginx 3.启动 Nginx 4.浏览默认站点 实施 1.配置 Nginx 源// 执行如下命令 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el…

CF132E Bits of merry old England

传送门构图好题。郑哥的题解 每一个输出的位置看作先分配变量(赋值或者用前面的),再输出。 给每个位置拆三个点 \(v_{i,1/2/3}\)。\(v_{i,1}\) 的流入表示这个位置的 "空变量" 数量(包括有值但是我们选择让它不重复使用的变量);\(v_{i,2}\) 有流入表示分配好了…