java pta前三次作业总结
前言:
三次题目,前两次感觉很简单,但是可能是好久都没有敲代码了,只能说还是写的挺艰难的,花了好长时间啊!!!一边翻书复健一边慢慢的写 但是只能说结果还是不错啊,正确率还是挺高的,就是多多少少有一些小问题,很难解决,第三次作业就是跟老师说的一样难度徒然增长啊,受制于我的数学知识更是忘得差不多了,所以说很艰难/(ㄒoㄒ)/~~ ,关于题量第一次还是挺多的,后两次都只有3道题,但是难度这方面就(流汗)。。。,写代码最困难的就是把之前的面向过程的思考方式,更改成我们需要的面向对象的思考方式,花了还是挺长时间的。
设计与分析:
7-2 串口字符解析:
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”。
如:11011或11111111111111111。
例如:
1:11101011
2:01001101
3: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); int n = 1; int sum = 0; String a = input.next(); if(a.length()<11) { System.out.print("null data"); return; } if(a.indexOf('0')<0) { System.out.print("null data"); return; } for(int i=0;i<a.length()-10;i++) { if(a.charAt(i)=='0') { sum=0; for(int f=i+1;f<i+9;f++) { if(a.charAt(f)=='1') sum++; } if(a.charAt(i+10)!='1') { System.out.print(n+":"); System.out.print("validate error"); }//1110111111111110111111101110111111110111 else if(sum%2==0&&a.charAt(i+9)!='1'||sum%2!=0&&a.charAt(i+9)!='0') { System.out.print(n+":"); System.out.print("parity check error"); } else { System.out.print(n+":"); for(int f=i+1;f<i+9;f++) { System.out.print(a.charAt(f)); } } if(n>=1) System.out.print("\n"); n++; i=i+10; } } } } //找0,不是10 奇偶判断
这道题一个人,一个键盘,坐一下午,很难写啊感觉

看的不是很懂这个软件,但是我自己认为这道题我还是写的还是蛮简洁的!、
一开始没太读懂这道题的含义,耽搁了很长的时间,主要运用的字符串的各种应用和范围的确定,这道题的关键就是把一大长串分割为小的部分然后再进行比对
题目集三,需要用到正则表达式,从没接触过的领域,又是漫长的学习
输入连个点的坐标,计算两点之间的距离
输入格式:
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) { Scanner input = new Scanner(System.in); String quan = input.nextLine(); String num[] = null; String []point = quan.split(" "); for(String i:point) { num = i.split(","); for(String j:num) if(!j.matches("^[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)$")) { System.out.print("Wrong Format"); return; } } if(point.length!=2) { System.out.print("wrong number of points"); return; } num = point[0].split(","); 点 a = new 点(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); 点 b = new 点(Double.valueOf(num[0]),Double.valueOf(num[1])); System.out.print(a.距离(b)); } } class 点 { double sum; Scanner input = new Scanner(System.in); double x; double y; public 点(double x,double y) { this.x=x; this.y=y; } double 距离(点 a) { return Math.sqrt((this.x-a.x)*(this.x-a.x)+(this.y-a.y)*(this.y-a.y)); } boolean 重合(点 a) { return this.x==a.x&&this.y==a.y; } }

主要还是用面向对象的思维和正则表达式格式的建立,数学思维没有难点,建立了点的类,为了下两题奠定基础
7-2 点线形系列2-线的计算
用户输入一组选项和数据,进行与直线有关的计算。选项包括:
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) { Scanner input = new Scanner(System.in); String quan = input.nextLine(); if(quan.charAt(1)!=':') { System.out.print("Wrong Format"); return; } String[] n= quan.split(":"); String num[] = null; String []point = n[1].split(" "); if(!n[0].matches("[0-5]")) { System.out.print("Wrong Format"); return; } if(quan.charAt(1)!=':') { System.out.print("Wrong Format"); return; } for(int i=0;i<point.length;i++) { num = point[i].split(","); if(num.length!=2) { System.out.print("Wrong Format"); return; } //System.out.print(num.length+"\n"); for(int j=0;j<num.length;j++) if(!num[j].matches("^[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)$")) { System.out.print("Wrong Format"); return; } } if(n[0].charAt(0)=='1') { if(point.length!=2) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 线 l1 = new 线(a,b); l1.斜率(a, b); return; } if(n[0].charAt(0)=='2') { if(point.length!=3) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 线 l2 = new 线(b,c); l2.垂直距离(a, b, c); return; } if(n[0].charAt(0)=='3') { if(point.length!=3) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 线 l3 = new 线(a,b); 线 l4 = new 线(b,c); l3.在同一线上(a, b, c); return; } if(n[0].charAt(0)=='4') { if(point.length!=4) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[3].split(","); point d = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 线 l5 = new 线(a,b); 线 l6 = new 线(c,d); if(a.重合(b)||b.重合(c)||c.重合(d)||d.重合(a)) { System.out.println("points coincide"); return; } if(l5.平行(a, b, c, d)) { System.out.print("true"); return; } else { System.out.print("false"); return; } } if(n[0].charAt(0)=='5') { if(point.length!=4) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[3].split(","); point d = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); if(a.重合(b)||b.重合(c)||c.重合(d)||d.重合(a)) { System.out.println("points coincide"); return; } 线 l7 = new 线(a,b); l7.交叉点(a, b, c, d); } } } class 线 { private point x; private point y; private point z; private point q; public 线(point x,point y) { this.x=x; this.y=y; } void 斜率(point x,point y) { if(x.重合(y)) { System.out.print("points coincide"); return; } else if(x.x==y.x) { System.out.print("Slope does not exist"); return; } else System.out.print((y.y-x.y)/(y.x-x.x)); return ; } void 垂直距离(point x,point y,point z) { double result; double k; double b; if(y.重合(z)||x.重合(y)||x.重合(z)) { System.out.print("points coincide"); return; } if(y.y==z.y) { result=Math.abs(x.y-y.y); System.out.print(result); return; } else if(y.x==z.x) { result=Math.abs(x.x-y.x); System.out.print(result); return; } else { k=(y.y-z.y)/(y.x-z.x); b=y.y-k*y.x; result = Math.abs((x.y-y.y)*z.x+(y.x-x.x)*z.y+x.x*y.y-x.y*y.x)/Math.sqrt((x.y-y.y)*(x.y-y.y)+(x.x-y.x)*(x.x-y.x)); System.out.print(result); return; } } boolean 平行(point x,point y,point z,point q) { return ((y.y-x.y)/(y.x-x.x)==(q.y-z.y)/(q.x-z.x)); } void 在同一线上(point x,point y,point z) { if(x.重合(y)||y.重合(z)||x.重合(z)) { System.out.println("points coincide"); return; } else { double l1=(y.y-x.y)/(y.x-x.x); double l2=(z.y-y.y)/(z.x-y.x); if(l1==l2) { System.out.println("true"); } else { System.out.println("false"); } return; } } void 交叉点(point x,point y,point z,point q) { double k1,k2; double b1,b2; point op = new point(((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)),((z.y-q.y)*(x.y*y.x-x.x*y.y)-(x.y-y.y)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y))); if((y.y-x.y)/(y.x-x.x)==(q.y-z.y)/(q.x-z.x)) { System.out.print("is parallel lines,have no intersection point"); return ; } else if(y.x==x.x&&z.x==q.x) { System.out.print("is parallel lines,have no intersection point"); return ; } else { System.out.print(op.x+","+op.y); double a1 = Math.max(x.x, y.x); double a2 = Math.max(z.x, q.x); double i1 = Math.min(x.x, y.x); double i2 = Math.min(z.x, q.x); if ((((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) > i1 || ((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) > i2) && (((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) < a2 || ((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) < a1)) { System.out.println(" " + true); } else { System.out.println(" " + false); } return; } } } class point { double sum; double x; double y; public point(double x,double y) { this.x=x; this.y=y; } double 距离(point a) { return Math.sqrt((this.x-a.x)*(this.x-a.x)+(this.y-a.y)*(this.y-a.y)); } boolean 重合(point a) { return this.x==a.x&&this.y==a.y; } }
在上一题的基础上加上的线的类主要还是格式的确定,和数学表达式上面太久没用了,想了很久,斜率这方面需要考虑更多情况;
7-3 点线形系列3-三角形的计算
用户输入一组选项和数据,进行与三角形有关的计算。选项包括:
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; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String quan = input.nextLine(); if(quan.charAt(1)!=':') { System.out.print("Wrong Format"); return; } String[] n= quan.split(":"); String num[] = null; String []point = n[1].split(" "); if(!n[0].matches("[0-5]")) { System.out.print("Wrong Format"); return; } for(int i=0;i<point.length;i++) { num = point[i].split(","); if(num.length!=2) { System.out.print("Wrong Format"); return; } for(int j=0;j<num.length;j++) if(!num[j].matches("^[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)$")) { System.out.print("Wrong Format"); return; } } if(n[0].charAt(0)=='1') { if(point.length!=3) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 角 o = new 角(a,b,c); o.等腰或等边(a, b, c); return; } if(n[0].charAt(0)=='2') { if(point.length!=3) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 角 o1 = new 角(a,b,c); o1.参数(a, b, c); return; } if(n[0].charAt(0)=='3') { if(point.length!=3) { System.out.print("wrong number of points"); return; } num = point[0].split(","); point a = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[1].split(","); point b = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); num = point[2].split(","); point c = new point(Double.valueOf(num[0]),Double.valueOf(num[1])); 角 o2 = new 角(a,b,c); o2.什么类型三角形(a, b, c); return; } } } class 角 { private point x; private point y; private point z; public 角(point x,point y,point z) { this.x=x; this.y=y; this.z=z; } void 等腰或等边(point x,point y,point z) { double n=x.距离(y); double m=x.距离(z); double l=z.距离(y); 线 l1=new 线(x, y); if(l1.在同一线上(x, y, z)) { return; } if(!(n+m>l)||!(m+l>n)||!(m+l>n)||!(m-n<l)||!(n-l<m)||!(l-m<n)) { System.out.print("data error"); return; } if(n==m||m==l||n==l) { System.out.print("true "); } else System.out.print("false "); if(n==m&&m==l&&l==n) { System.out.print("true"); return; } else { System.out.print("false"); return; } } //+" "+s+" "+a.x+","+a.y void 参数(point x,point y,point z) { double n=x.距离(y); double m=x.距离(z); double l=z.距离(y); float Perimeter= (float) ((float)n+m+l); float p=(float)(n+m+l)/2; float s=(float)Math.sqrt(p*(p-n)*(p-m)*(p-l)); point a=new point((x.x+y.x+z.x)/3,(x.y+y.y+z.y)/3); System.out.print(Perimeter+" "+s+" "+a.x+","+a.y); } void 什么类型三角形(point x,point y,point z) { double n=x.距离(y); double m=x.距离(z); double l=z.距离(y); 线 l1=new 线(x, y); if(l1.在同一线上(x, y, z)) { return; } if(!(n+m>l)||!(m+l>n)||!(m+l>n)||!(m-n<l)||!(n-l<m)||!(l-m<n)) { System.out.print("data error"); return; } sort(n,m,l); if(m*m+n*n-l*l<0.00001) { System.out.print("false true false"); } else if(m*m+l*l-n*n/2*m*l>0) System.out.print("true false false"); else System.out.print("false false true"); } void sort(double n, double m, double l) { n=1;m=3;l=2; if(n<m) { double temp=n; n=m; m=temp; } if(n<l) { double temp=n; n=l; l=temp; } } } class point { double x; double y; public point(double x,double y) { this.x=x; this.y=y; } double 距离(point a) { return Math.sqrt((this.x-a.x)*(this.x-a.x)+(this.y-a.y)*(this.y-a.y)); } boolean 重合(point a) { return this.x==a.x&&this.y==a.y; } } class 线 { private point x; private point y; private point z; private point q; public 线(point x,point y) { this.x=x; this.y=y; } void 斜率(point x,point y) { if(x.重合(y)) { System.out.print("points coincide"); return; } else if(x.x==y.x) { System.out.print("Slope does not exist"); return; } else System.out.print((y.y-x.y)/(y.x-x.x)); return ; } void 垂直距离(point x,point y,point z) { double result; double k; double b; if(y.重合(z)||x.重合(y)||x.重合(z)) { System.out.print("points coincide"); return; } if(y.y==z.y) { result=Math.abs(x.y-y.y); System.out.print(result); return; } else if(y.x==z.x) { result=Math.abs(x.x-y.x); System.out.print(result); return; } else { k=(y.y-z.y)/(y.x-z.x); b=y.y-k*y.x; result = Math.abs((x.y-y.y)*z.x+(y.x-x.x)*z.y+x.x*y.y-x.y*y.x)/Math.sqrt((x.y-y.y)*(x.y-y.y)+(x.x-y.x)*(x.x-y.x)); System.out.print(result); return; } } boolean 平行(point x,point y,point z,point q) { return ((y.y-x.y)/(y.x-x.x)==(q.y-z.y)/(q.x-z.x)); } boolean 在同一线上(point x,point y,point z) { if(x.重合(y)||y.重合(z)||x.重合(z)) { System.out.println("date error"); return true; } else { double l1=(y.y-x.y)/(y.x-x.x); double l2=(z.y-y.y)/(z.x-y.x); if(l1==l2) { System.out.println("data error"); return true; } return false; } } void 交叉点(point x,point y,point z,point q) { double k1,k2; double b1,b2; point op = new point(((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)),((z.y-q.y)*(x.y*y.x-x.x*y.y)-(x.y-y.y)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y))); if((y.y-x.y)/(y.x-x.x)==(q.y-z.y)/(q.x-z.x)) { System.out.print("is parallel lines,have no intersection point"); return ; } else if(y.x==x.x&&z.x==q.x) { System.out.print("is parallel lines,have no intersection point"); return ; } else { System.out.print(op.x+","+op.y); double a1 = Math.max(x.x, y.x); double a2 = Math.max(z.x, q.x); double i1 = Math.min(x.x, y.x); double i2 = Math.min(z.x, q.x); if ((((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) > i1 || ((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) > i2) && (((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) < a2 || ((z.x-q.x)*(x.y*y.x-x.x*y.y)-(x.x-y.x)*(z.y*q.x-z.x*q.y))/((y.y-x.y)*(q.x-z.x)-(y.x-x.x)*(q.y-z.y)) < a1)) { System.out.println(" " + true); } else { System.out.println(" " + false); } return; } } }
这道题我并没用完成,太难了呜呜呜,但是好歹写了一些拿到了一些分数,也不算是完全失败吧!
踩坑心得
关于类的使用,琢磨了很久,好歹还是掌握了一些些吧
还有正则表达式。。生气!
还有题目的隐藏条件也是非常坑人啊。。。
7-2里我一开始写的是寻找10,后来发现还有其他符合10的情况,后来改成0完成,还得是多多细心啊!
改进意见
题目集三的代码复杂度还是有点高,应该多加入一个输入类可以减少大量的工程,许多判断的条件也可以多加一个类,一些类的属性也没有写的很契合,下次改进吧
总结
虽然是困难重重吧,但好歹还是尽力的完成了这次的作业吧,浅浅的了解了面向对象应该怎么操作,转变了些许思维吧,但还是需要更努力的学习
让我们熟悉了整数和浮点数之间的算法,字符串的使用,正则表达式的使用。

浙公网安备 33010602011771号