Blog-1 2022-1\2\3
这是本学期的第一次博客作业,主要是对pta平台上前三次大作业进行一个总结。
本次内容主要分为五个方面:(1)前言(2)设计与分析(3)踩坑心得(4)改进建议(5)总结
(1)前言
首先来谈谈这三次大作业的题目涉及到的知识点、题量、以及题目难度等大体情况吧。
毕竟是刚刚接触到这门语言,学的东西都是入门级别的,一些基础内容、基础专业名词和思想,所以第一次作业是非常简单的,虽然题量稍大一些,一共有9道题目,但是逻辑上都是一些最基础最直白的逻辑,测算身体质量指数、长度质量单位换算、奇数求和、房产税费计算、游戏角色选择,对于这几道题,我个人认为就是来锻炼大家对Java语言中基础语句的书写能力,比如输入格式、输出格式、怎样去定义一个变量等等,因为它们的逻辑就是一些if else语句,switch case语句,最简单的循环操作等,在c语言中大家都早已学会,后面的学号识别、求平方根近似值、二进制数字提取和判断三角形类型这几道题才稍稍复杂一点点,牵扯到数组、 .charAt( ) 等语句,但也是入门级别的语句。
第二次的大作业只有三道题,分别是字母数字的转换、串口字符解析、String的格式判断与内容提取,这次作业的目的很明确,因为这三道题考察的知识点相同,都是字符串的相关知识,相较于第一次作业而言,难度有了明显的提高。其中,第二题的难度最大,过程也最复杂,一三题只要掌握了字符串中 .charAt( ) 的知识,都能很顺利的做下来,第二题的复杂之处就在于输入的二进制数字太多,不同位数的数字代表的含义也有不同,奇偶校验位的含义容易理解错误。
第三次大作业难度很大,看着只有三道题,但是需要花费大量的时间,老师特意强调要用面向对象的思想去完成,所以要设计不同的类,考察了类与对象的相关知识,这三道题从点到线到三角形,难度越来越大,我整体的完成情况都不是很好。
(2)设计与分析
(3)踩坑心得
(4)改进建议
解释一下,这里我将这三点内容放在一起,论题目来写,增强这篇随笔的可读性。
本次博客着重分析一下第二次作业的第二题和第三次作业的三道题。
1)RS232是串口常用的通信协议,在异步通信模式下,串口可以一次发送5~8位数据,收发双方之间没有数据发送时线路维持高电平,相当于接收方持续收到数据“1”(称为空闲位),发送方有数据发送时,会在有效数据(5~8位,具体位数由通信双方提前设置)前加上1位起始位“0”,在有效数据之后加上1位可选的奇偶校验位和1位结束位“1”。请编写程序,模拟串口接收处理程序,注:假定有效数据是8位,奇偶校验位采用奇校验。
输入格式:
由0、1组成的二进制数据流。例如:11110111010111111001001101111111011111111101111
输出格式:
过滤掉空闲、起始、结束以及奇偶校验位之后的数据,数据之前加上序号和英文冒号。
如有多个数据,每个数据单独一行显示。
若数据不足11位或者输入数据全1没有起始位,则输出"null data",
若某个数据的结束符不为1,则输出“validate error”。
若某个数据奇偶校验错误,则输出“parity check error”。
若数据结束符和奇偶校验均不合格,输出“validate error”。
我的源代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); String s=input.nextLine(); int m=0; int n=1; if(s.length()>=11) { for(int i=0;i<s.length();i++) { if(s.charAt(i)=='0') { m=1; break; } } } if(m==0) { System.out.println("null data"); } else if(m==1) { int k=0; for(int i=0;i<s.length();i+=n) { n=1; if(s.charAt(i)=='0') { if((s.charAt(i+1)+s.charAt(i+2)+s.charAt(i+3)+s.charAt(i+4)+s.charAt(i+5)+s.charAt(i+6)+s.charAt(i+7)+s.charAt(i+8)+s.charAt(i+9))%2==1&&s.charAt(i+10)=='1') { k++; System.out.println(k+":"+s.charAt(i+1)+""+s.charAt(i+2)+""+s.charAt(i+3)+""+s.charAt(i+4)+""+s.charAt(i+5)+""+s.charAt(i+6)+""+s.charAt(i+7)+""+s.charAt(i+8)); n=11; } if((s.charAt(i+1)+s.charAt(i+2)+s.charAt(i+3)+s.charAt(i+4)+s.charAt(i+5)+s.charAt(i+6)+s.charAt(i+7)+s.charAt(i+8)+s.charAt(i+9))%2==1&&s.charAt(i+10)=='0') { k++; System.out.println(k+":"+"validate error"); n=11; } if((s.charAt(i+1)+s.charAt(i+2)+s.charAt(i+3)+s.charAt(i+4)+s.charAt(i+5)+s.charAt(i+6)+s.charAt(i+7)+s.charAt(i+8)+s.charAt(i+9))%2==0&&s.charAt(i+10)=='1') { k++; System.out.println(k+":"+"parity check error"); n=11; } if((s.charAt(i+1)+s.charAt(i+2)+s.charAt(i+3)+s.charAt(i+4)+s.charAt(i+5)+s.charAt(i+6)+s.charAt(i+7)+s.charAt(i+8)+s.charAt(i+9))%2==0&&s.charAt(i+10)=='0') { k++; System.out.println(k+":"+"validate error"); n=11; } } } } } }
分析:
这道题主要考察了字符串的charAt( )方法,来返回指定索引处的字符。
首先先用if语句+for循环遍历字符串,判断它是否大于11位数字及是否存在起始字符,若不存在起始字符或少于11位数字,输出 null data;
若存在起始字符且大于11位数字,进而来判断它的结束符和奇偶校验是否合格。
结束字符位置固定,直接用s.charAt(i+10)进行判断。奇偶校验时要注意,这里的奇偶校验并不是判断某一位上是奇数还是偶数,而是前面几位的奇数个数和偶数个数。
要注意的是,当字符串中包含多个数据时,要进行计数,在这里我用k=0,k++来进行计数。
心得:
通过练习这道题目,我对charAt( )语句的运用更加熟练,以后遇见类似题目会更加快速联想到这个方法。同时,也学会更加耐心仔细地读题,因为刚开始总是感觉这道题目好难,看不懂题目的意思,但当自己真正静下来读题时,发现题目的含义也并不是很难理解,只是刚开始潜意识觉得看不懂。
问题及收获:
在做这道题时,踩了两个大坑,第一个是奇偶校验,起初我以为奇偶校验就是简单的看s.charAt(i+9)是0还是1,题目采用奇数校验便是规定那一位上应该为1,可提交代码时始终有测试点过不去,在网上仔细查资料后才发现奇偶校验的真实含义是看前面几位的奇数个数和偶数个数,既然是奇数校验,便对前面几位数字取和后对2取余进行判断。第二个是m=1时的for循环,当检索到一个起始字符后,下一次再寻找起始字符时,就要从上一串数据的结束字符开始,刚开始我就简单写为i=0;i<s.length();i++ 导致输出错误,因为只要碰见0了就开始做判断,因此将i++改为i+=n 当找到了一个起始字符时,就从11位之后开始再次寻找。
以后做这类题目概念很长很专业的题时,要及时去网上查这些专业名词的含义,有看不懂或者不确定的地方要先去搜,不要自己随便理解一个意思后就急忙去打代码。
2)输入连个点的坐标,计算两点之间的距离
输入格式:
4个double类型的实数,两个点的x,y坐标,依次是x1、y1、x2、y2,两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔。例如:0,0 1,1或0.1,-0.3 +3.5,15.6。
若输入格式非法,输出"Wrong Format"。
若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。
输出格式:
计算所得的两点之间的距离。例如:1.4142135623730951
我的源代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); point p=new point(); DataFormat d=new DataFormat(); String str=input.nextLine(); d.check(str); p.getnum(str); double x1=p.x1; double y1=p.y1; double x2=p.x2; double y2=p.y2; p.getDis(x1, y1, x2, y2); } } class point{ public double x1; public double y1; public double x2; public double y2; public void getnum(String s) { String [] num=new String[4]; int i=0; int j=0; int k=0; for(i=0;i<s.length();i++) { if(s.charAt(i)==','||s.charAt(i)==' ') { num[k]= s.substring(j,i); k++; j=i+1; } } num[3]=s.substring(j,s.length()); x1=Double.parseDouble(num[0]); y1=Double.parseDouble(num[1]); x2=Double.parseDouble(num[2]); y2=Double.parseDouble(num[3]); } public void getDis(double x1,double y1,double x2,double y2) { double dis=Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2)); System.out.println(dis); } } class DataFormat{ public void check(String s) { int i=0; for(i=0;i<s.length();i++) { if(s.charAt(i)=='+'||s.charAt(i)=='-') { if(s.charAt(i+1)=='+'||s.charAt(i+1)=='-') { System.out.println("Wrong Format"); } } } for(i=0;i<s.length();i++) { if(s.charAt(i)=='.'||s.charAt(i)==' '||s.charAt(i)==',') { if(s.charAt(i+1)=='.'||s.charAt(i+1)==' '||s.charAt(i+1)==',') { System.out.println("Wrong Format"); } } } } }
分析:
这道题主要考察类与对象的知识,老师在上课时特意强调要创建多种类来解题,对题目进行分析,一共需要用到三个方法:1.保存x,y的坐标,可以用 get X ,set X ,get Y ,set Y 2.计算两点之间的距离 double getDis(Point p) 3.对输入数据的格式检查。
通过分析得知,保存坐标和计算距离这两项是固定不变的,不会随着题目的变化而变化,可以放到一个类别中,而输入格式的要求会随着题目的变化而变化,因此我创建class point类来存放,前两种方法,getnum(String s)提取坐标,getDis(double x1,double y1,double x2,double y2)计算距离,创建class DataFormat类来检查输入格式。
假如说这道题输入的直接是一串代表坐标的数字,题目就会容易的多,但是这道题目要求输入两个点的坐标之间以空格分隔,每个点的x,y坐标以英文“,”分隔,再加上数据是double类型,所以怎样把数据提取出来是一个问题。在这里我用num[k]= s.substring(j,i)来截取字符串,并将x1,y1,x2,y2存储在数组num[ ]中,再进行数据转换,Double.parseDouble(num[ ])函数将字符串类型转换位double类型进行运算。
我的类图如下:

心得:
通过这道题,我对类的创建有了更深刻的理解,明白了怎样去划分类别,而不是像以前一样只会单一的放在一个类里,对面向对象这个思想有了些许的领悟,同时,学会了很多新知识,如上文提到的num[k]= s.substring(j,i)方法,以及Double.parseDouble(num[ ])进行数据转换,对我而言这是很大的收获。
问题及收获:
在提取坐标时我起初不知道截取字符串的方法,只想着用循环去套,一直做不出来,所以在以后的学习中要不断去探索新方法,学习新知识,不能被拘泥在过去的思想中。
在判断输入格式是否正确时,我不知道怎样去判断输入的点的个数,正确的做法应该是用正则表达式去判断,思路清晰且方便,但是我不太会用,所以格式判断一直不对,我也会再去学习。
改进建议:
其实这道题最主要还是不会划分类,在老师讲之前我的头绪很混乱,不知道该怎样创建类,不会学以致用,上课时老师讲了大概框架以后我的思路才逐渐清晰起来,知道怎样去下笔,但是我在使用getDis时传入的是x,y,其实最好的做法是应该传入一个point,但是我当时不是很理解怎样传点,所以没有传point.另一个应该改进的地方是判断输入格式是否正确时,应该用正则表达式进行判断,这样清晰也方便。
3)用户输入一组选项和数据,进行与直线有关的计算。选项包括:
1:输入两点坐标,计算斜率,若线条垂直于X轴,输出"Slope does not exist"。
2:输入三个点坐标,输出第一个点与另外两点连线的垂直距离。
3:输入三个点坐标,判断三个点是否在一条线上,输出true或者false。
4:输入四个点坐标,判断前两个点所构成的直线与后两点构成的直线是否平行,输出true或者false.
5:输入四个点坐标,计算输出前两个点所构成的直线与后两点构成的直线的交点坐标,x、y坐标之间以英文分隔",",并输出交叉点是否在两条线段之内(不含四个端点)的判断结果(true/false),判断结果与坐标之间以一个英文空格分隔。若两条线平行,没有交叉点,则输出"is parallel lines,have no intersection point"。
输入格式:基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。
例如:1:0,0 1,1
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
不论哪个选项,如果格式、点数量都符合要求,但构成任一条线的两个点坐标重合,输出"points coincide"
我的源代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub try{ Scanner input=new Scanner(System.in); String str=input.nextLine(); Line l=new Line(); if(str.charAt(0)=='1') { l.getnum1(str); double x1=l.x1; double y1=l.y1; double x2=l.x2; double y2=l.y2; l.getK(x1,y1,x2,y2); } else if(str.charAt(0)=='2') { l.getnum2(str); double x1=l.x1; double y1=l.y1; double x2=l.x2; double y2=l.y2; double x3=l.x3; double y3=l.y3; l.getDis(x1,y1,x2,y2,x3,y3); } else if(str.charAt(0)=='3') { l.getnum2(str); double x1=l.x1; double y1=l.y1; double x2=l.x2; double y2=l.y2; double x3=l.x3; double y3=l.y3; l.online(x1,y1,x2,y2,x3,y3); } else if(str.charAt(0)=='4') { l.getnum3(str); double x1=l.x1; double y1=l.y1; double x2=l.x2; double y2=l.y2; double x3=l.x3; double y3=l.y3; double x4=l.x4; double y4=l.y4; l.parallel(x1,y1,x2,y2,x3,y3,x4,y4); } }catch(Exception e) { System.out.println("Wrong Format"); } } static class Line{ public double x1; public double y1; public double x2; public double y2; public double x3; public double y3; public double x4; public double y4; public void getnum1(String s) { String [] num=new String[4]; int i=0; int j=2; int k=0; for(i=0;i<s.length();i++) { if(s.charAt(i)==','||s.charAt(i)==' ') { num[k]= s.substring(j,i); k++; j=i+1; } } num[3]=s.substring(j,s.length()); x1=Double.parseDouble(num[0]); y1=Double.parseDouble(num[1]); x2=Double.parseDouble(num[2]); y2=Double.parseDouble(num[3]); } public void getK(double x1,double y1,double x2,double y2) { if(x1==x2&&y1==y2) { System.out.println("points coincide"); } else if(x1==x2&&y1!=y2) { System.out.println("Slope does not exist"); } else { double k=(y1-y2)/(x1-x2); System.out.println(k); } } public void getnum2(String s) { String [] num=new String[6]; int i=0; int j=2; int k=0; for(i=0;i<s.length();i++) { if(s.charAt(i)==','||s.charAt(i)==' ') { num[k]= s.substring(j,i); k++; j=i+1; } } num[5]=s.substring(j,s.length()); x1=Double.parseDouble(num[0]); y1=Double.parseDouble(num[1]); x2=Double.parseDouble(num[2]); y2=Double.parseDouble(num[3]); x3=Double.parseDouble(num[4]); y3=Double.parseDouble(num[5]); } public void getDis(double x1,double y1,double x2,double y2,double x3,double y3) { if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x3==x2&&y3==y2)) { System.out.println("points coincide"); } else{ double a=(y2-y3)*x1+(x3-x2)*y1+(x2*y3-y2*x3); double b=Math.sqrt(Math.pow(x3-x2, 2)+Math.pow(y2-y3, 2)); double dis=Math.abs(a/b); System.out.println(dis); } } public void online(double x1,double y1,double x2,double y2,double x3,double y3) { if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x3==x2&&y3==y2)) { System.out.println("points coincide"); } else { double k1=(y1-y2)/(x1-x2); double k2=(y3-y2)/(x3-x2); if(k1==k2) { System.out.println("true"); } else { System.out.println("false"); } } } public void getnum3(String s) { String [] num=new String[8]; int i=0; int j=2; int k=0; for(i=0;i<s.length();i++) { if(s.charAt(i)==','||s.charAt(i)==' ') { num[k]= s.substring(j,i); k++; j=i+1; } } num[7]=s.substring(j,s.length()); x1=Double.parseDouble(num[0]); y1=Double.parseDouble(num[1]); x2=Double.parseDouble(num[2]); y2=Double.parseDouble(num[3]); x3=Double.parseDouble(num[4]); y3=Double.parseDouble(num[5]); x4=Double.parseDouble(num[6]); y4=Double.parseDouble(num[7]); } public void parallel(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4) { double k1=(y1-y2)/(x1-x2); double k2=(y3-y4)/(x3-x4); if(k1==k2) { System.out.println("true"); } else { System.out.println("false"); } } } }
分析:
这道题是在上一题的基础上加以探究,创建Line类,里面包含了获取坐标、求斜率、求垂直距离、判断三点是否共线、两条直线是否平行等方法以及点的属性,通过if else语句对用户做出的选择进行回应,进入到相应的方法中去。在获取点的坐标的方法上几乎和上一道题一样,使用截取字符串的函数,num[k]= s.substring(j,i)来截取字符串,并将x1,y1,x2,y2存储在数组num[ ]中,再进行数据转换,Double.parseDouble(num[ ])函数将字符串类型转换位double类型进行运算,然后将点的坐标传到相应的方法中进行相关计算,在类的划分上,几乎和上一题一模一样,获取坐标和相关计算在一个类里,对输入格式的检测在另外一个类里。在截取字符串时候要注意,前两个字符分别是用户的选择和冒号,所以在提取和存储坐标时要记得跳过这两个字符,即起初时的 j 值应该为2不为0,当时时间来不及了,所以我没有细想,直接用getnum1(String s),getnum2(String s),getnum3(String s)分别来表示截取两个点、三个点、四个点的坐标。
我的类图如下:

心得:
这道题和上道题有一些联系,基本上可以说是在上一道题的基础上完成的,所以我最大的一个心得体会就是类的划分至关重要,如果类划分的好了,很多代码不用修改就能继续运用到下一道题目中,可是如果类划分的不好,修改代码时费时费力,相当于用相同的思路又重新写了一遍代码,降低了写代码的效率,我认为,老师当时花了那么长时间来教大家划分类,有很大一部分原因就是这个吧。
问题及收获:
其实这个代码问题颇多,其中很多问题和上一个题目的问题一样,比如在输入格式的判断上,不知道怎样去判断输入的点的个数,正则表达式也学的不太清楚,所以我要继续学习正则表达式的格式和使用规则。代码非常繁琐,尤其在获取坐标上占了非常大的篇幅,而且最后当用户输入5时的方法没有写出来,一直没读明白题的意思,最主要的一个原因就是没有尽早开始写作业,忽略了题的难度,没有把控风险,以为题少就很快能写完,导致后面根本没有时间去修改代码,没有精心去设计代码,所以我在今后的学习中一定赶早不赶晚!
改进:
在调用方法时,最好的做法应该是传入一个point,毕竟上文有现成的point,但是我当时不是很理解怎样传点,所以没有传点进去,而且传了点的坐标,导致过程非常繁琐,代码非常笨重,后面输入四个点时我需要传进入八个坐标,非常麻烦。最大的应该改进的地方就是我要把输入格式的判断和当用户输入5时的代码好好写写。
4)用户输入一组选项和数据,进行与三角形有关的计算。选项包括:
1:输入三个点坐标,判断是否是等腰三角形、等边三角形,判断结果输出true/false,两个结果之间以一个英文空格符分隔。
2:输入三个点坐标,输出周长、面积、重心坐标,三个参数之间以一个英文空格分隔,坐标之间以英文","分隔。
3:输入三个点坐标,输出是钝角、直角还是锐角三角形,依次输出三个判断结果(true/false),以一个英文空格分隔,
4:输入五个点坐标,输出前两个点所在的直线与三个点所构成的三角形相交的交点数量,如果交点有两个,则按面积大小依次输出三角形被直线分割成两部分的面积。若直线与三角形一条线重合,输出"The point is on the edge of the triangle"
5:输入四个点坐标,输出第一个是否在后三个点所构成的三角形的内部(输出in the triangle/outof triangle)。
必须使用射线法,原理:由第一个点往任一方向做一射线,射线与三角形的边的交点(不含点本身)数量如果为1,则在三角形内部。如果交点有两个或0个,则在三角形之外。若点在三角形的某条边上,输出"on the triangle"
输入格式:
基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。
输出格式:
基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
如果输入的三个点无法构成三角形,输出"data error"。
注意:输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0
选项4中所输入线的两个点坐标重合,输出"points coincide"
分析:
这一道题应该是建立在上两道题的基础上实现的,很多方法和判断都来自前两道题目,大部分功能也是靠数学知识进行数字运算实现的,最复杂的地方在于情况太多了,所以不断的在进行各种判断与选择,思绪混乱时很容易出错。但是其实对于这道题我是感觉很羞愧的,因为我当时没来得及写这道题,我低估了这次作业的难度,所以我开始的很晚,再加上刚开始不是很理解类的创建与划分,所以我当时在构思时时间就快截至了,我越着急越乱,所以这道题几乎没来得及写,完成度非常非常低。
踩坑心得:
这道题踩的最大的一个坑就是没有及时开始写作业,就像老师说的那样,给自己留的余地经不起一点风险,压根没有考虑到如果题目难度超出预料该怎么办,所以以后一定要早点开始写作业。
要附上自己的提交源码,但是我几乎没有提交什么有用的知识,把那些东西放在这里就当作是一次对自己深刻的教训吧。
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO code application logic here Scanner input = new Scanner(System.in); String str; str = input.nextLine(); System.out.println("Wrong Format"); } } class point{ public double x1; public double y1; public double x2; public double y2; public double x3; public double y3; public void getnum(String s) { String [] num=new String[6]; int i=0; int j=0; int k=0; for(i=0;i<s.length();i++) { if(s.charAt(i)==','||s.charAt(i)==' ') { num[k]= s.substring(j,i); k++; j=i+1; } } num[5]=s.substring(j,s.length()); x1=Double.parseDouble(num[0]); y1=Double.parseDouble(num[1]); x2=Double.parseDouble(num[2]); y2=Double.parseDouble(num[3]); x3=Double.parseDouble(num[4]); y3=Double.parseDouble(num[5]); } public void getDis(double x1,double y1,double x2,double y2,double x3,double y3) { double dis1=Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2, 2)); double dis2=Math.sqrt(Math.pow(x3-x2, 2)+Math.pow(y3-y2, 2)); double dis3=Math.sqrt(Math.pow(x1-x3, 2)+Math.pow(y1-y3, 2)); if((dis1==dis2&&dis2!=dis3)||(dis1==dis3&&dis2!=dis3)||(dis3==dis2&&dis1!=dis3)) { System.out.println("ture"); } else { } } }
(5)总结
1.通过这几次大作业,我学到很多新的知识,在长度质量单位换算这道题中,我知道了如果数据不是float类型时要在输出语句中转换为float类型;对Java的语法更加熟记于心,例如调用数学函数时记得要加上Math. ;学到了很多新的函数和方法,比如字符串的charAt( )方法可以来返回指定索引处的字符,substring函数来截取字符串,Double.parseDouble(num[ ])语句可以转换数据类型。同时我对类的概念有了更加深刻的了解,知道了该怎样去划分类,知道了怎样创建对象,更加深刻理解了类与对象的关系,领悟到了一些面向对象和面向过程思维的差异。
2.同时我也意识到了我的很多不足,如看题目时容易看错,对于自己不理解的名词没有及时查找资料,比如奇偶校验;考虑问题时不够全面,有时候看到没过的测试点是什么才能想到自己是哪里没有考虑到;正则表达式还没有学会使用,如果学会了这个可以节省很多时间。
3.除此之外,从第三次大作业反映出的最大的一个不足就是没有给自己留足够的时间,所以在之后的学习中我会积极主动去完成作业,给自己留有容纳风险的余地。
浙公网安备 33010602011771号