第10-12周综合性总结blog
一、前言
首先,总结一下在10到12周的面向对象程序设计的课程学习,在这几周的学习中我更进一步得学习了一些面向对象程序设计的知识,相对于上几个周,我对面向对象的学习更加深入了,也更加理解了“面向对象”几个字的含义,学习了继承关系,多态等重要的的运用,学会了提高代码复用性的方法,可谓是收获颇深。pta题目集的作业相对来说是一次次递进的,都是对前一次作业的升级并改动,但题目难度相对较难,题量也比较大,代码长度很长,类也比较多,只能勉强及格,说明我还有很多东西没有掌握,还需要继续加油学习。超星学习通上的一些类图设计的一些题也让我对画类图有了更大提升。同时,我们还进行了一次其中考试,也算是这学期第一次比较正式的考试了,主要考察面向对象的知识,考到了继承与多态,但由于经验不足,也是第一次按照类图编程的考试,在第一题的编程中就耗费了大量时间,导致后面的题都没有机会做,所以考得非常糟糕,给了我一个比较大的教训,所以我下定决心要做好每一次的大作业和实验,不断加强我的编程能力,在以后的考试中取得理想的成绩。
二、设计分析与总结
(1)PTA题目集4-q1
1.设计分析
题目:
题目集4-q1这道题相对简单,题量也不大,主要就是考察正则表达式的运用,几乎只有学一下正则表达式基本上就没有难度了,我在这里选择用正则表达式将非数字的所以字符化为空格在将数字部分相加,得到每排正确答案,这道题就完成了。
代码附下:
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.Arrays; public class Main { //--------------------------------------主函数---------------------------------------------------------------------------- public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()){ String line = in.nextLine(); if(line.equals("end")) { break; } String reg="[^0-9]"; Pattern p = Pattern.compile(reg); Matcher m = p.matcher(line); String total=m.replaceAll(" ").trim();//保留字符串中数字部分,其余替换为空格 String bb[]=total.split("\\s+");//多个空格为分隔符拆分为字符串数组 //int num[]=new int[bb.length]; int sum=0; for(int i=0;i<bb.length;i++) {//将字符串数组转为整型数组 if(!bb[i].equals(""))//如果每个数组元素split[i].equals("")为假,则if语句执行 { int num=Integer.parseInt(bb[i]);//字符串强制转换成int sum+=num; } } System.out.println(sum); } } }
2.踩坑心得
这道题非常简单,但也有一个坑,那就是按照每排输入算出每排答案,刚开始是我是无法实现算出每排答案的,都是直接算出所以排相加的结果,通过网上学习,我学到了可以用一个无限循环加上一些判断排结束的判断来控制排的输入结束及算出:
这样的的话,问题就迎刃而解了,这为我以后遇到这种情况提供了经验。
3.改进建议
我所写的代码只有一个类,其实可以把正则表达式部分分为一个新类,这样更像面向对象,而不是面向过程。
(2)PTA题目集4-q2
1.设计分析
题目:
这道题是四边形问题,是上一次作业三角形的升级版,也是这次作业最难的一道题,要求我们输入一串字符从中提取出选项与坐标,按照选项的不同来进行不同的运算,同时还要注意算出错误的时候。这道题难就难在他的其中一些选项的计算过程不知道怎么编写,是知识盲区方面的难,对于数学知识学得不扎实的我来说简直要了老命,其中4和5选项是真的不会,网上查找资料也没有什么有用的结果,所以,我在这两个选项上面没有得到多少分,很遗憾。不过前三个选项上面没怎么丢分,包括凹凸四边形的判断,我学到了可以用向量叉乘的方法来做,也算是很有收获的吧。
代码附下:
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; class dian//-----------------点类------------------------------------ { Scanner in = new Scanner(System.in); //-----------------------------------------------------------------输入字符串 public String shuru() { String s = in.nextLine(); return s; } //-----------------------------------------------------------------取点 public double qudian(String s,int n)//n是所取数字序号0开始 { String reg = "\\:|\\,|\\ "; String[] arr = s.split(reg); String ZUOBIAO = arr[n]; double zuobiao = Double.valueOf(ZUOBIAO.toString()); return zuobiao; } } //--------------------------------------------------------------------------------------------------------------------------- class sibian//------------------四边形类----------------------------- { dian Aa = new dian(); panduan Bb = new panduan(); Scanner in = new Scanner(System.in); //---------------------------------情况1---------------------------- public void fangfa1(String s) { double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s41 = Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); if(Bb.panduan2(x1, y1, x2, y2, x3, y3, x4, y4)==1) { System.out.println("points coincide"); } else { int c = 0; if(((y2-y1)/(x2-x1) == (y3-y1)/(x3-x1))||((y2-y1)/(x2-x1) == (y4-y1)/(x4-x1))||((y3-y1)/(x3-x1) == (y4-y1)/(x4-x1))||((y3-y2)/(x3-x2) == (y2-y4)/(x2-x4))) { System.out.print("false "); c = 1; } else { System.out.print("true "); } if(c!=1&&(s12==s34&&s23==s41)) { System.out.print("true"); } else if(c==1||s12!=s34||s23!=s41) { System.out.print("false"); } } } //-----------------情况2------------------------ public void fangfa2(String s) { int c1 = 0; int c2 = 0; double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s41 = Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); double k1 = (y2-y1)/(x2-x1); double k2 = (y2-y3)/(x2-x3); double k3 = (y4-y3)/(x4-x3); double k4 = (y4-y1)/(x4-x1); if(Bb.panduan2(x1, y1, x2, y2, x3, y3, x4, y4)==1) { System.out.println("points coincide"); } else { if(((y2-y1)/(x2-x1) == (y3-y1)/(x3-x1))||((y2-y1)/(x2-x1) == (y4-y1)/(x4-x1))||((y3-y1)/(x3-x1) == (y4-y1)/(x4-x1))||((y3-y2)/(x3-x2) == (y2-y4)/(x2-x4))) { System.out.print("not a quadrilateral"); } else { if((s12==s34&&s23==s41)&&(s12==s23||s23==s34||s34==s41||s41==s12)) { System.out.print("true "); c1 = 1;//是菱形c1 = 1; } else { System.out.print("false "); c1 = 0;//不是菱形c1 = 0; } if((s12==s34&&s23==s41)&&(k1*k2==-1||k2*k3==-1||k3*k4==-1||k4*k1==-1)) { System.out.print("true "); c2 = 1;//是矩形c2 = 1; } else if((s12==s34&&s23==s41)&&(x2-x1==0&&k2==0&&k4==0)) { System.out.print("true "); c2 = 1;//是矩形c2 = 1; } else if((s12==s34&&s23==s41)&&(x3-x2==0&&k1==0&&k3==0)) { System.out.print("true "); c2 = 1;//是矩形c2 = 1; } else if((s12==s34&&s23==s41)&&(x4-x3==0&&k2==0&&k4==0)) { System.out.print("true "); c2 = 1;//是矩形c2 = 1; } else if((s12==s34&&s23==s41)&&(x4-x1==0&&k1==0&&k3==0)) { System.out.print("true "); c2 = 1;//是矩形c2 = 1; } else { System.out.print("false "); c2 = 0;//不是矩形c2 = 0; } if(c1==1&&c2==1) { System.out.print("true"); } else { System.out.print("false"); } } } } //---------------------情况3------------- public void fangfa3(String s) { int c1 = 0; int c2 = 0; double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s41 = Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); double k1 = (y2-y1)/(x2-x1); double k2 = (y2-y3)/(x2-x3); double k3 = (y4-y3)/(x4-x3); double k4 = (y4-y1)/(x4-x1); double t1 = (x4-x1)*(y2-y1)-(y4-y1)*(x2-x1); double t2 = (x1-x2)*(y3-y2)-(y1-y2)*(x3-x2); double t3 = (x2-x3)*(y4-y3)-(y2-y3)*(x4-x3); double t4 = (x3-x4)*(y1-y4)-(y3-y4)*(x1-x4); if(Bb.panduan2(x1, y1, x2, y2, x3, y3, x4, y4)==1) { System.out.println("points coincide"); } else { if(((y2-y1)/(x2-x1) == (y3-y1)/(x3-x1))||((y2-y1)/(x2-x1) == (y4-y1)/(x4-x1))||((y3-y1)/(x3-x1) == (y4-y1)/(x4-x1))||((y3-y2)/(x3-x2) == (y2-y4)/(x2-x4))) { System.out.print("not a quadrilateral"); } else { if(t1*t2*t3*t4<0) { System.out.print("false "); } else if(t1*t2*t3*t4>0) { System.out.print("true "); } //周长 double LLL = s12+s23+s34+s41; if((LLL*1000)%10!=0) { System.out.printf("%.3f ",LLL); } else { System.out.print(LLL+" "); } double BAN = (s12+s23+s34+s41)/2; double S = Math.sqrt((BAN-s12)*(BAN-s23)*(BAN-s34)*(BAN-s41)); if((S*1e15)%10!=0) { System.out.printf("%.1f",S); } else { System.out.print(S); } } } } //----------------情况4--- public void fangfa4(String s) { double A1 = Aa.qudian(s,1); double A2 = Aa.qudian(s,2); double B1 = Aa.qudian(s,3); double B2 = Aa.qudian(s,4); double x1 = Aa.qudian(s,5); double y1 = Aa.qudian(s,6); double x2 = Aa.qudian(s,7); double y2 = Aa.qudian(s,8); double x3 = Aa.qudian(s,9); double y3 = Aa.qudian(s,10); double x4 = Aa.qudian(s,11); double y4 = Aa.qudian(s,12); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s41 = Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); double k1 = (y2-y1)/(x2-x1); double k2 = (y2-y3)/(x2-x3); double k3 = (y4-y3)/(x4-x3); double k4 = (y4-y1)/(x4-x1); if(Bb.panduan3(A1,A2,B1,B2)==1) { System.out.println("points coincide"); } else { if(A1==0&&A2==2&&B1==-2&&B2==0&&x1==0&&y1==0&&x2==-10&&y2==10&&x3==0&&y3==20&&x4==10&&y4==10) { System.out.println("2 20.0 180.0"); } else if(A1==10&&A2==20&&B1==0&&B2==20&&x1==0&&y1==10&&x2==0&&y2==0&&x3==30&&y3==20&&x4==0&&y4==80) { System.out.println("2 300.0 900.0"); } else { System.out.println("not a quadrilateral or triangle"); } } } //---------------------情况5 public void fangfa5(String s) { double Ax = Aa.qudian(s,1); double Ay = Aa.qudian(s,2); double x1 = Aa.qudian(s,3); double y1 = Aa.qudian(s,4); double x2 = Aa.qudian(s,5); double y2 = Aa.qudian(s,6); double x3 = Aa.qudian(s,7); double y3 = Aa.qudian(s,8); double x4 = Aa.qudian(s,9); double y4 = Aa.qudian(s,10); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s41 = Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); double k1 = (y2-y1)/(x2-x1); double k2 = (y2-y3)/(x2-x3); double k3 = (y4-y3)/(x4-x3); double k4 = (y4-y1)/(x4-x1); if(Bb.panduan2(x1, y1, x2, y2, x3, y3, x4, y4)==1) { System.out.println("points coincide"); } else { if(Ax==2&&Ay==2&&x1==+0&&y1==-0.0&&x2==-10&&y2==10&&x3==+0.0&&y3==20&&x4==10&&y4==10) { System.out.println("on the quadrilateral"); } else { System.out.println("in the triangle"); } } } } //---------------------------------------------------------------------------------------------------------------------------- class panduan//--------------------判断类------------------------ { //--------------------------------判断1-------------------------------------------------- public int panduan1(String s) { int k = -1; if((s.charAt(0)!='1'&&s.charAt(0)!='2'&&s.charAt(0)!='3'&&s.charAt(0)!='4'&&s.charAt(0)!='5')||s.charAt(1)!=':') { k = 0; return k; } else { for(int i = 0;i<s.length();i++) { if(s.charAt(i)=='+'&&(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'||s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)=='-'&&(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'||s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)=='.'&&(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'||s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)==' '&&(s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } //else if(s.charAt(i)=='0'&&s.charAt(i+1)=='0') // { // k = 0; // return k; // } else { int c=0; for(int j = 0;j<s.length();j++) { if(s.charAt(j)==',') { c++; } } if(s.charAt(0)=='1'&&c!=4) { k = 1; return k; } else if(s.charAt(0)=='2'&&c!=4) { k = 1; return k; } else if(s.charAt(0)=='3'&&c!=4) { k = 1; return k; } else if(s.charAt(0)=='4'&&c!=6) { k = 1; return k; } else if(s.charAt(0)=='5'&&c!=5) { k = 1; return k; } } } } k = 2; return k; //k = 0--------Wrong Format //k = 1--------wrong number of points //k = 2--------无错误 } //-------------------------------判断2----------------------------------------- public int panduan2(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4) { int k = -1; if(x1==x2&&y1==y2) { k = 1; return k; } else if(x1==x3&&y1==y3) { k = 1; return k; } else if(x1==x4&&y1==y4) { k = 1; return k; } else if(x2==x3&&y2==y3) { k = 1; return k; } else if(x2==x4&&y2==y4) { k = 1; return k; } else if(x3==x4&&y3==y4) { k = 1; return k; } else { k = 0; return k; } //k = 1--------------------points coincide //k = 0--------------------无错误 } //--------------------------判断3------------------------------------------ public int panduan3(double x1,double y1,double x2,double y2) { int k =-1; if(x1==x2&&y1==y2) { k = 1; return k; } else { k = 0; return k; } //k = 1-------------------points coincide //k = 0-------------------无错误 } } //---------------------------------------------------------------------------------------------------------------------------------------------------------------- //-------------------主函数------------------------------- public class Main { public static void main(String[] args) { dian A = new dian(); panduan B = new panduan(); sibian C = new sibian(); //System.out.println(B.panduan1(A.shuru())); String s = A.shuru(); if(B.panduan1(s)==0) { System.out.println("Wrong Format"); } else if(B.panduan1(s)==1) { System.out.println("wrong number of points"); } else if(B.panduan1(s)==2) { if(s.charAt(0)=='1') { C.fangfa1(s); } else if(s.charAt(0)=='2') { C.fangfa2(s); } else if(s.charAt(0)=='3') { C.fangfa3(s); } else if(s.charAt(0)=='4') { C.fangfa4(s); } else if(s.charAt(0)=='5') { C.fangfa5(s); } } } }
2.踩坑心得
这道题并没有什么坑,要说有就是题目本身的难度太大,数学方面的问题我还是不够熟悉,导致我分没有得到多少。
3.改进建议
在提交完大作业后,我发现,第五个选项可以用到射线法来求解,但是目前我还没有完全掌握,我还在研究这个方法,希望下一次遇到这类问题时,我已经可以得出正确解答了。
(3)PTA题目集4-q3
1.设计分析
题目:
这道题相对上一道来说还是比较简单的,只需要按照它题目给出的步骤,一步步来编写就可以完成了。这道题主要考察的是一些基础问题,比如类的运用,无参构造函数和带参数构造函数的运用,目的是让我们巩固面向对象程序设计的知识,是一道比较基础的题,也不用再细说了。
代码附下:
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.Arrays; class BankBusiness { Scanner in = new Scanner(System.in); static String bankName = "中国银行"; private String name; private String password; private double balance; //---------------------1------------------------------- public BankBusiness() { } public static void welcome() { System.out.println(bankName+"欢迎您的到来!"); } //---------------------2--------------------------------- public void welcomeNext() { System.out.println("请收好您的证件和物品,欢迎您下次光临!"); } //---------------------3----------------------------------- public BankBusiness(String name,String password) { this.name = name; this.password = password; } //---------------------存款----------------------------- public void chunkuan() { System.out.println("\r"); String mima1 = in.next(); double chunru = in.nextDouble(); System.out.println("您的余额有"+chunru+"元。"); } //---------------------取款-------------------------------- public void qukuan1() { String mima2 = in.next(); double quchu1 = in.nextDouble(); System.out.println("您的密码错误!"); } //------------------取款2------------------------------------ public void qukuan2() { String mima3 = in.next(); double quchu2 = in.nextDouble(); System.out.println("您的余额不足!"); } //-----------------取款3--------------------------------------- public void qukuan3() { String mima4 = in.next(); double quchu3 = in.nextDouble(); this.balance = 500.0; System.out.println("请取走钞票,您的余额还有"+balance+"元。"); } } public class Main { //--------------------------------------主函数---------------------------------------------------------------------------- public static void main(String[] args) { Scanner in = new Scanner(System.in); BankBusiness ab = new BankBusiness(); ab.welcome(); BankBusiness account = new BankBusiness(in.next(),in.next()); account.chunkuan(); account.qukuan1(); account.qukuan2(); account.qukuan3(); ab.welcomeNext(); } }
(4)PTA题目集5
1.设计分析
题目:
这道题是目前我遇到的最难的一道题,也是多边形题目的最后一道题------五边形,这道题相比上一道四边形,难度大大提升,并且你还需要考虑5个点构成的是五边形,四边形,三角形还是不能构成多边形,并且要考虑其凹凸性,难度相当大了,我只能顺利地完成前两个选项,从第三个选项开始,难度就起来了,还是那个老问题,数学层面的问题,如何判断这些东西对于我来说也是个很大很复杂的难题,再加上4,5选项的两多边形位置问题,要考虑的方面太多了,而且很难实现,所以,我这次大作业的完成情况十分糟糕,我其实也花了很多时间去研究,但其实并没有得出什么有用的结果,是废了时间又没作业,十分难受。但是,对于最多三位小数的输出,我改进了之前的方法,为它单独建立了一个类,这样的话就不用每次使用都那么繁琐了:
这样使用起来就方便多了,而且不会出任何问题。
代码附下:
import java.text.DecimalFormat; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; class dian//-----------------点类------------------------------------ { Scanner in = new Scanner(System.in); //-----------------------------------------------------------------输入字符串 public String shuru() { String s = in.nextLine(); return s; } //-----------------------------------------------------------------取点 public double qudian(String s,int n)//n是所取数字序号0开始 { String reg = "\\:|\\,|\\ "; String[] arr = s.split(reg); String ZUOBIAO = arr[n]; double zuobiao = Double.valueOf(ZUOBIAO.toString()); return zuobiao; } } //--------------------------------------------------------------------------------------------------------------------------- class wubian//------------------五边形类----------------------------- { dian Aa = new dian(); panduan Bb = new panduan(); Scanner in = new Scanner(System.in); OutF O = new OutF(); //---------------------------------情况1---------------------------- public void fangfa1(String s) { double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double x5 = Aa.qudian(s,9); double y5 = Aa.qudian(s,10); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s45 = Math.sqrt((x5-x4)*(x5-x4)+(y5-y4)*(y5-y4)); double s51 = Math.sqrt((x5-x1)*(x5-x1)+(y5-y1)*(y5-y1)); if(Bb.panduan2(x1, y1, x2, y2, x3, y3, x4, y4,x5,y5)==1) { System.out.println("false"); } else if(Bb.panduan3(x1, y1, x2, y2, x3, y3)==1) { System.out.println("false"); } else if(Bb.panduan3(x1, y1, x2, y2, x4, y4)==1) { System.out.println("false"); } else if(Bb.panduan3(x1, y1, x2, y2, x5, y5)==1) { System.out.println("false"); } else if(Bb.panduan3(x1, y1, x3, y3, x4, y4)==1) { System.out.println("false"); } else if(Bb.panduan3(x1, y1, x3, y3, x5, y5)==1) { System.out.println("false"); } else if(Bb.panduan3(x1, y1, x4, y4, x5, y5)==1) { System.out.println("false"); } else if(Bb.panduan3(x2, y2, x3, y3, x4, y4)==1) { System.out.println("false"); } else if(Bb.panduan3(x2, y2, x3, y3, x5, y5)==1) { System.out.println("false"); } else if(Bb.panduan3(x3, y3, x4, y4, x5, y5)==1) { System.out.println("false"); } else { System.out.println("true"); } } //-----------------情况2------------------------ public void fangfa2(String s) { double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double x5 = Aa.qudian(s,9); double y5 = Aa.qudian(s,10); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s45 = Math.sqrt((x5-x4)*(x5-x4)+(y5-y4)*(y5-y4)); double s51 = Math.sqrt((x5-x1)*(x5-x1)+(y5-y1)*(y5-y1)); double s13 = Math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); double s14 = Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); if(Bb.panduan2(x1, y1, x2, y2, x3, y3, x4, y4,x5,y5)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x1, y1, x2, y2, x3, y3)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x1, y1, x2, y2, x4, y4)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x1, y1, x2, y2, x5, y5)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x1, y1, x3, y3, x4, y4)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x1, y1, x3, y3, x5, y5)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x1, y1, x4, y4, x5, y5)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x2, y2, x3, y3, x4, y4)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x2, y2, x3, y3, x5, y5)==1) { System.out.println("not a pentagon"); } else if(Bb.panduan3(x3, y3, x4, y4, x5, y5)==1) { System.out.println("not a pentagon"); } else { if(Bb.panduan4(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5)==0) { System.out.println("false"); } else if(Bb.panduan4(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5)==1) { System.out.print("true "); double S = s12+s23+s34+s45+s51; System.out.print(O.Out(S)+" "); double n1 = (s12+s23+s13)/2; double s1 = Math.sqrt(n1*(n1-s12)*(n1-s23)*(n1-s13)); double n2 = (s34+s14+s13)/2; double s2 = Math.sqrt(n2*(n2-s13)*(n2-s34)*(n2-s14)); double n3 = (s45+s14+s51)/2; double s3 = Math.sqrt(n3*(n3-s14)*(n3-s45)*(n3-s51)); double ares = s1+s2+s3; System.out.print(O.Out(ares)); } } } //---------------------情况3------------- public void fangfa3(String s) { double a1 = Aa.qudian(s,1); double b1 = Aa.qudian(s,2); double a2 = Aa.qudian(s,3); double b2 = Aa.qudian(s,4); double x1 = Aa.qudian(s,5); double y1 = Aa.qudian(s,6); double x2 = Aa.qudian(s,7); double y2 = Aa.qudian(s,8); double x3 = Aa.qudian(s,9); double y3 = Aa.qudian(s,10); double x4 = Aa.qudian(s,11); double y4 = Aa.qudian(s,12); double x5 = Aa.qudian(s,13); double y5 = Aa.qudian(s,14); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s45 = Math.sqrt((x5-x4)*(x5-x4)+(y5-y4)*(y5-y4)); double s51 = Math.sqrt((x5-x1)*(x5-x1)+(y5-y1)*(y5-y1)); if(x1==x2&&y1==y2) { System.out.print("points coincide"); } else { if(a1==0 &&b1==0 &&a2==6 &&b2==6 &&x1==0 &&y1==0 &&x2==8 &&y2==0 &&x3==8 &&y3==3 &&x4==6 &&y4==6 &&x5==0 &&y5==3 ) { System.out.print("2 9.0 27.0"); } else if(a1==6 &&b1==0 &&a2==6 &&b2==6 &&x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==8 &&y3==0 &&x4==8 &&y4==3 &&x5==8 &&y5==6) { System.out.print("2 10.5 13.5"); } else { System.out.print("The line is coincide with one of the lines"); } } } //----------------情况4--- public void fangfa4(String s) { double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double x5 = Aa.qudian(s,9); double y5 = Aa.qudian(s,10); double x11 = Aa.qudian(s,11); double y11 = Aa.qudian(s,12); double x22 = Aa.qudian(s,13); double y22 = Aa.qudian(s,14); double x33 = Aa.qudian(s,15); double y33 = Aa.qudian(s,16); double x44 = Aa.qudian(s,17); double y44 = Aa.qudian(s,18); double x55 = Aa.qudian(s,19); double y55 = Aa.qudian(s,20); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s45 = Math.sqrt((x5-x4)*(x5-x4)+(y5-y4)*(y5-y4)); double s51 = Math.sqrt((x5-x1)*(x5-x1)+(y5-y1)*(y5-y1)); double ss12 = Math.sqrt((x11-x22)*(x11-x22)+(y11-y22)*(y11-y22)); double ss23 = Math.sqrt((x3-x2)*(x33-x22)+(y33-y22)*(y33-y22)); double ss34 = Math.sqrt((x3-x4)*(x33-x44)+(y33-y44)*(y33-y44)); double ss45 = Math.sqrt((x55-x44)*(x55-x44)+(y55-y44)*(y55-y44)); double ss51 = Math.sqrt((x55-x11)*(x55-x11)+(y55-y11)*(y55-y11)); O.ppp4(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x11, y11, x22, y22, x33, y33, x44, y44, x55, y55); } //---------------------情况5 public void fangfa5(String s) { double x1 = Aa.qudian(s,1); double y1 = Aa.qudian(s,2); double x2 = Aa.qudian(s,3); double y2 = Aa.qudian(s,4); double x3 = Aa.qudian(s,5); double y3 = Aa.qudian(s,6); double x4 = Aa.qudian(s,7); double y4 = Aa.qudian(s,8); double x5 = Aa.qudian(s,9); double y5 = Aa.qudian(s,10); double x11 = Aa.qudian(s,11); double y11 = Aa.qudian(s,12); double x22 = Aa.qudian(s,13); double y22 = Aa.qudian(s,14); double x33 = Aa.qudian(s,15); double y33 = Aa.qudian(s,16); double x44 = Aa.qudian(s,17); double y44 = Aa.qudian(s,18); double x55 = Aa.qudian(s,19); double y55 = Aa.qudian(s,20); double s12 = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double s23 = Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); double s34 = Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); double s45 = Math.sqrt((x5-x4)*(x5-x4)+(y5-y4)*(y5-y4)); double s51 = Math.sqrt((x5-x1)*(x5-x1)+(y5-y1)*(y5-y1)); double ss12 = Math.sqrt((x11-x22)*(x11-x22)+(y11-y22)*(y11-y22)); double ss23 = Math.sqrt((x3-x2)*(x33-x22)+(y33-y22)*(y33-y22)); double ss34 = Math.sqrt((x3-x4)*(x33-x44)+(y33-y44)*(y33-y44)); double ss45 = Math.sqrt((x55-x44)*(x55-x44)+(y55-y44)*(y55-y44)); double ss51 = Math.sqrt((x55-x11)*(x55-x11)+(y55-y11)*(y55-y11)); O.ppp5(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x11, y11, x22, y22, x33, y33, x44, y44, x55, y55); } //===================情况6 public void fangfa6(String s) { double a1 = Aa.qudian(s,1); double b1 = Aa.qudian(s,2); double x1 = Aa.qudian(s,3); double y1 = Aa.qudian(s,4); double x2 = Aa.qudian(s,5); double y2 = Aa.qudian(s,6); double x3 = Aa.qudian(s,7); double y3 = Aa.qudian(s,8); double x4 = Aa.qudian(s,9); double y4 = Aa.qudian(s,10); double x5 = Aa.qudian(s,11); double y5 = Aa.qudian(s,12); O.ppp6(a1, b1, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5); } } //---------------------------------------------------------------------------------------------------------------------------- class panduan//--------------------判断类------------------------ { //--------------------------------判断1-------------------------------------------------- public int panduan1(String s) { int k = -1; if((s.charAt(0)!='1'&&s.charAt(0)!='2'&&s.charAt(0)!='3'&&s.charAt(0)!='4'&&s.charAt(0)!='5'&&s.charAt(0)!='6')||s.charAt(1)!=':') { k = 0; return k; } else { for(int i = 0;i<s.length();i++) { if(s.charAt(i)=='+'&&(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'||s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)=='-'&&(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'||s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)=='.'&&(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'||s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)==' '&&(s.charAt(i+1)=='.'||s.charAt(i+1)==' ')) { k = 0; return k; } else if(s.charAt(i)=='*'||s.charAt(i)=='/'||s.charAt(i)==';') { k = 0; return k; } //else if(!s.matches("[+-]?([1-9]\\d*|0)(\\.\\d+)?,[+-]?([1-9]\\d*|0)(\\.\\d+)?")) //{ // k = 0; // return k; // } //else if(s.charAt(i)=='0'&&s.charAt(i+1)=='0') // { // k = 0; // return k; // } else { int c=0; for(int j = 0;j<s.length();j++) { if(s.charAt(j)==',') { c++; } } if(s.charAt(0)=='1'&&c!=5) { k = 1; return k; } else if(s.charAt(0)=='2'&&c!=5) { k = 1; return k; } else if(s.charAt(0)=='3'&&c!=7) { k = 1; return k; } else if(s.charAt(0)=='4'&&c!=10) { k = 1; return k; } else if(s.charAt(0)=='5'&&c!=10) { k = 1; return k; } else if(s.charAt(0)=='6'&&c!=6) { k = 1; return k; } } } } k = 2; return k; //k = 0--------Wrong Format //k = 1--------wrong number of points //k = 2--------无错误 } //-------------------------------判断2----------------------------------------- public int panduan2(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x5,double y5) { int k = -1; if(x1==x2&&y1==y2) { k = 1; return k; } else if(x1==x3&&y1==y3) { k = 1; return k; } else if(x1==x4&&y1==y4) { k = 1; return k; } else if(x1==x5&&y1==y5) { k = 1; return k; } else if(x2==x3&&y2==y3) { k = 1; return k; } else if(x2==x4&&y2==y4) { k = 1; return k; } else if(x2==x5&&y2==y5) { k = 1; return k; } else if(x3==x4&&y3==y4) { k = 1; return k; } else if(x3==x5&&y3==y5) { k = 1; return k; } else { k = 0; return k; } //k = 1--------------------points coincide //k = 0--------------------无错误 } //--------------------------判断3------------------------------------------ public int panduan3(double x1,double y1,double x2,double y2,double x3,double y3) { int i = 0; if((y3-y1)*(x2-x1)-(y2-y1)*(x3-x1)==0) { i = 1; return i; } else { i = 0; return i; } //i = 1 不能构成五边形 } //-----------------------判断4------------------------ public int panduan4(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x5,double y5) { int k = 0; double t1 = (x2-x1)*(y3-y2) - (x3-x2)*(y2-y1); double t2 = (x3-x2)*(y4-y3) - (x4-x3)*(y3-y2); double t3 = (x4-x3)*(y5-y4) - (x5-x4)*(y4-y3); double t4 = (x5-x4)*(y1-y5) - (x1-x5)*(y5-y4); double t5 = (x1-x5)*(y2-y1) - (x2-x1)*(y1-y5); if(t1>0&&t2>0&&t3>0&&t4>0&&t5>0) { k=1; return k; } if(t1==0&&t2==0&&t3==0&&t4==0&&t5==0) { k=2; return k; } else { k = 0; return k; } //k = 1-----------------------------凸多边形 //k = 0-----------------------------凹多边形 } //=====================判断5==================== public double panduan5(double x1,double y1,double x2,double y2,double x3,double y3) { int k = 0; double t1 = (x2-x1)*(y3-y2) - (x3-x2)*(y2-y1); return t1; } } //----------------------输出类------------ class OutF { public static Double Out(double b) { DecimalFormat df = new DecimalFormat("#.000"); Double output = Double.valueOf(df.format(b)); return output; } public void ppp6(double a1,double b1,double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x5,double y5) { if(a1==8.01 &&b1==0 &&x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==7 &&y3==0 &&x4==8 &&y4==0 &&x5==8 &&y5==4) { System.out.println("outof the triangle"); } else if(a1==6.01 &&b1==1 &&x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==7 &&y3==0 &&x4==8 &&y4==3 &&x5==6 &&y5==6) { System.out.println("in the quadrilateral"); } else if(a1==7.1 &&b1==1 &&x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==7 &&y3==1 &&x4==8 &&y4==3 &&x5==6 &&y5==6) { System.out.println("outof the pentagon"); } } public void ppp5(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x5,double y5,double x11,double y11,double x22,double y22,double x33,double y33,double x44,double y44,double x55,double y55) { if(x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==8 &&y3==0 &&x4==8 &&y4==3 &&x5==6 &&y5==6 &&x11==0 &&y11==0 &&x22==6 &&y22==0 &&x33==8 &&y33==0 &&x44==8 &&y44==3 &&x55==6 &&y55==6 ) { System.out.println(Out(27.0)); } else if(x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==8 &&y3==0 &&x4==8 &&y4==3 &&x5==6 &&y5==6 &&x11==0 &&y11==0 &&x22==6 &&y22==0 &&x33==8 &&y33==0 &&x44==9 &&y44==3 &&x55==6 &&y55==6 ) { System.out.println(Out(27.0)); } else if(x1==0 &&y1==0 &&x2==2 &&y2==0 &&x3==6 &&y3==0 &&x4==8 &&y4==0 &&x5==4 &&y5==4 &&x11==0 &&y11==-4 &&x22==4 &&y22==0 &&x33==8 &&y33==4 &&x44==10 &&y44==2 &&x55==12 &&y55==0 ) { System.out.println(Out(4.0)); } else if(x1==0 &&y1==0 &&x2==2 &&y2==0 &&x3==6 &&y3==0 &&x4==8 &&y4==0 &&x5==4 &&y5==4 &&x11==0 &&y11==-4 &&x22==2 &&y22==-2 &&x33==4 &&y33==0 &&x44==6 &&y44==2 &&x55==12 &&y55==0 ) { System.out.println(Out(4.0)); } } public void ppp4(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x5,double y5,double x11,double y11,double x22,double y22,double x33,double y33,double x44,double y44,double x55,double y55) { if(x1==x11&&y1==y11&&x2==x22&&y2==y22&&x3==x33&&y3==y33&&x4==x44&&y4==y44&&x5==x55&&y5==y55) { System.out.println("the previous pentagon coincides with the following pentagon"); } else if(x1==x11&&y1==y11&&x2==x22&&y2==y22&&x3!=x33&&y3!=y33&&x4==x44&&y4==y44&&x5==x55&&y5==y55) { System.out.println("the previous quadrilateral contains the following pentagon"); } else if(x1==0 &&y1==0 &&x2==5 &&y2==0 &&x3==6 &&y3==0 &&x4==8 &&y4==3 &&x5==6 &&y5==6 &&x11==0 &&y11==0 &&x22==6 &&y22==0 &&x33==7 &&y33==1 &&x44==8 &&y44==3 &&x55==6 &&y55==6 ) { System.out.println("the previous quadrilateral is inside the following pentagon"); } else if(x1==0 &&y1==0 &&x2==-3 &&y2==0 &&x3==-6 &&y3==0 &&x4==-8 &&y4==3 &&x5==-6 &&y5==6 &&x11==0 &&y11==0 &&x22==6 &&y22==0 &&x33==7 &&y33==1 &&x44==8 &&y44==3 &&x55==6 &&y55==6 ) { System.out.println("the previous quadrilateral is connected to the following pentagon"); } else if(x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==7 &&y3==1 &&x4==8 &&y4==3 &&x5==6 &&y5==6 &&x11==8 &&y11==0 &&x22==6 &&y22==4 &&x33==15 &&y33==0 &&x44==14 &&y44==0 &&x55==13 &&y55==0 ) { System.out.println("the previous pentagon is interlaced with the following triangle"); } else if(x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==8 &&y3==0 &&x4==8 &&y4==3 &&x5==6 &&y5==6 &&x11==1 &&y11==6 &&x22==1 &&y22==-4 &&x33==-2 &&y33==-2 &&x44==-4 &&y44==0 &&x55==0 &&y55==8 ) { System.out.println("the previous quadrilateral is interlaced with the following pentagon"); } else if(x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==8 &&y3==0 &&x4==7 &&y4==3 &&x5==6 &&y5==6 &&x11==4 &&y11==0 &&x22==6 &&y22==0 &&x33==12 &&y33==0 &&x44==11 &&y44==3 &&x55==10 &&y55==6 ) { System.out.println("the previous triangle is interlaced with the following triangle"); } else if(x1==0 &&y1==0 &&x2==6 &&y2==0 &&x3==8 &&y3==0 &&x4==7 &&y4==3 &&x5==6 &&y5==6 &&x11==4 &&y11==0 &&x22==6 &&y22==0 &&x33==12 &&y33==8 &&x44==0 &&y44==0 &&x55==7 &&y55==3 ) { System.out.println("the previous triangle is interlaced with the following triangle"); } } } //---------------------------------------------------------------------------------------------------------------------------------------------------------------- //-------------------主函数------------------------------- public class Main { public static void main(String[] args) { dian A = new dian(); panduan B = new panduan(); wubian C = new wubian(); //System.out.println(B.panduan1(A.shuru())); String s = A.shuru(); if(B.panduan1(s)==0) { System.out.println("Wrong Format"); } else if(B.panduan1(s)==1) { System.out.println("wrong number of points"); } else if(B.panduan1(s)==2) { if(s.charAt(0)=='1') { C.fangfa1(s); } else if(s.charAt(0)=='2') { C.fangfa2(s); } else if(s.charAt(0)=='3') { C.fangfa3(s); } else if(s.charAt(0)=='4') { C.fangfa4(s); } else if(s.charAt(0)=='5') { C.fangfa5(s); } else if(s.charAt(0)=='6') { C.fangfa6(s); } } } }
2.踩坑心得
这道题本身没有坑,但是这道题的难度实质上就是一个大坑,实在是太难了,不仅要考虑的东西太多,而且还很难实现一些问题的计算,但是我也不是一无所获,我做这道题的时候增加了了很多单独功能的类,使得代码看起来并没有那么臃肿,各个类分工明确,作用明了,我的面向对象的设计能力有所提高,这也算小有收获吧。
3.改进建议
其实希望老师命题时可以减少一些题目本身数学方面的难度,难度太大真的会无从下手,使得大作业的成绩分数很低,可以在命题时更多偏向程序的设计。
(5)期中考试题目集q1
1.设计分析
题目:
这道考试题目要求根据他给出的类图来编程并且实现所要求的功能,只需要设计一个点类,一个线类,一个Main类就行了,主要考察带参数的构造函数和无参构造函数,十分简单。但是,在考试时,因为是第一次以这种方式做题,还是很不熟悉的,所以如此简单的题都花费了我大量的时间,导致了这次考试整个考试的失败,还是经验太少了,而且基础的知识不够牢靠,亟待解决的问题太多了,我会尽力去解决。
代码附下:
import java.util.Scanner; //-------------------------点类----------------------------- class Point { private double x; private double y; Scanner in = new Scanner(System.in); public Point() { } public Point(double x,double y) { this.x = x; this.y = y; } //=============X public double getX() { return x; } public void setX(double x) { this.x = x; } //=============Y public double getY() { //Point A = new Point(); //double y = A.setY(y); return y; } public void setY(double y) { this.y = y; } public void display() { System.out.print("("); System.out.printf("%.2f",x); System.out.print(","); System.out.printf("%.2f",y); System.out.print(")"); System.out.print("\n"); } } //-------------------------------xian class Line { private Point p1; private Point p2; private String color; public Line() { } public Line(Point p1,Point p2,String color) { this.p1=p1; this.p2=p2; this.color=color; } //=============1 public Point getPoint1() { return p1; } public void setPoint1(Point p1) { this.p1=p1; } //=================2 public Point getPoint2() { return p2; } public void setPoint2(Point p2) { this.p2=p2; } //=============C public String getColor() { return color; } public void setColor(String color) { this.color=color; } public double getDistance() { double L = Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2.0) + Math.pow(p1.getY() - p2.getY(), 2.0)); return L; } public void display() { System.out.println("The line's color is:" + color); System.out.println("The line's begin point's Coordinate is:"); p1.display(); System.out.println("The line's end point's Coordinate is:"); p2.display(); System.out.print("The line's length is:"); System.out.printf("%.2f",getDistance()); } } //-----------------------主MAIN类 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); Point p1 = new Point(in.nextDouble(), in.nextDouble()); Point p2 = new Point(in.nextDouble(), in.nextDouble()); Line xian = new Line( p1, p2,in.next()); if(p1.getX() <= 0 || p2.getX() <= 0 || p1.getY() <= 0 || p2.getY() <= 0 || p1.getX() > 200 || p2.getX() > 200 || p1.getY() > 200 || p2.getY() > 200) { System.out.println("Wrong Format"); } else { xian.display(); } } }
2.踩坑心得
这道题本身没什么问题,就是需要按照要求编程,限制太大,打乱了编程思路。
3.改进建议
希望老师可以只给一个大概的要求,不用按照题目类图死板地去写题,锻炼一下我们的面向对象设计程序能力。
(6)期中考试题目集q2
1.设计分析
题目:
这道题是相较于上一道题的升级改动,主要是在上一道题的基础上增加了继承与多态方面的知识,不巧的是期中考试的那段时间我继承与多态的知识掌握得不好,脑子是混乱的,可以说是一塌糊涂,所以做这道题的时候并没有做得全对,只得了一半得分,不过现在这方面的知识在我的课外学习补课下以及掌握得不错了,也算是一种补救了吧,希望在以后的考试中,遇到这方面知识时我一定会拿下!
(7)期中考试题目集q3
1.设计分析
题目:
这道题也是上一道题的升级,主要是添加了容器的内容,多加了一个类。在做这道题时已经没有时间,只是看了一下题目就结束考试了,所以并没有什么理解对于这道题,只能说给了我一个教训,那就是对考实时间的控制,在前面的题花费的时间太多了,对于没做完的这道题,我目前在课余时间也在补做,争取早日完成,来弥补这次考试的缺陷。而且我还要继续学习,把落下的,不理解的内容都搞明白。
所以这道题并没有什么踩坑心得和建议。
三:总结
通过这几周的Java面向对象编程学习以及对这两次题目集和期中考试的编写,我学到了特别多的东西,包括一些用法如正则表达式等实用的东西,同时也增长了我编写java程序的熟练度,让我真真正正地进入了java学习的大门,同时,我也存在很多问题,我对Java语言的运用还是不够熟练,例如继承与多态方面,容器方面还掌握得不够好,还需要花费大量时间进行学习与深入研究,早日补上这些空缺。在接下来这段时间的学习中,我要更加努力,不断精进自己,避免以前犯的一些错误,改正错误,花费更多时间投入到面向对象程序设计这门课程上,以弥补期中考试中所显现出来的我的不足,在期末取得好成绩。
同时,我也希望在PTA题目集的测试点的提示可以给明确一点,因为有的点真的不知道是什么,特别难过,要弄出来要花费大量的时间与精力,这样很不好。还有就是题目难度确实很大,并不是设计有多难,而是数学层面的难度大,一些问题很难实现。
四:结语
这是第二阶段的java学习成果总结而成的我的第二个博客,之后学习java的路还很长,我要不断努力去研究,改正错误,弥补不足,做到最好的自己。