目录
pta第二次博客
1.前言
2.设计与分析
第四次作业第一题
1.题目:
“蛟龙号”载人深潜器是我国首台自主设计、自主集成研制的作业型深海载人潜水器,设计最大下潜深度为7000米级,也是目前世界上下潜能力最强的作业型载人潜水器。“蛟龙号”可在占世界海洋面积99.8%的广阔海域中使用,对于我国开发利用深海的资源有着重要的意义。
中国是继美、法、俄、日之后世界上第五个掌握大深度载人深潜技术的国家。在全球载人潜水器中,“蛟龙号”属于第一梯队。目前全世界投入使用的各类载人潜水器约90艘,其中下潜深度超过1000米的仅有12艘,更深的潜水器数量更少,目前拥有6000米以上深度载人潜水器的国家包括中国、美国、日本、法国和俄罗斯。除中国外,其他4国的作业型载人潜水器最大工作深度为日本深潜器的6527米,因此“蛟龙号”载人潜水器在西太平洋的马里亚纳海沟海试成功到达7020米海底,创造了作业类载人潜水器新的世界纪录。
从2009年至2012年,蛟龙号接连取得1000米级、3000米级、5000米级和7000米级海试成功。下潜至7000米,说明蛟龙号载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一。
2012年6月27日11时47分,中国“蛟龙”再次刷新“中国深度”——下潜7062米。6月3日,“蛟龙”出征以来,已经连续书写了5个“中国深度”新纪录:6月15日,6671米;6月19日,6965米;6月22日,6963米;6月24日,7020米;6月27日,7062米。下潜至7000米,标志着我国具备了载人到达全球99%以上海洋深处进行作业的能力,标志着“蛟龙”载人潜水器集成技术的成熟,标志着我国深海潜水器成为海洋科学考察的前沿与制高点之一,标志着中国海底载人科学研究和资源勘探能力达到国际领先水平。
‘蛟龙’号是我国载人深潜发展历程中的一个重要里程碑。它不只是一个深海装备,更代表了一种精神,一种不畏艰险、赶超世界的精神,它是中华民族进军深海的号角。
了解蛟龙号”载人深潜器“的骄人业绩,为我国海底载人科学研究和资源勘探能力达到国际领先水平而自豪,小伙伴们与祖国同呼吸、共命运,一定要学好科学文化知识、提高个人能力,增强创新意识,做事精益求精,立科技报国之志!
请编写程序,实现如下功能:读入关于蛟龙号载人潜水器探测数据的多行字符串,从给定的信息找出数字字符,输出每行的数字之和。
提示 若输入为“2012年2月”,则该行的输出为:2014。若干个连续的数字字符作为一个整体,以十进制形式相加。
输入格式:
读入关于蛟龙号载人潜水器探测数据的多行字符串,每行字符不超过80个字符。
以"end"结束。
输出格式:
与输入行相对应的各个整数之和。
试题分析
本题的难点在于如何如何将数字从段落中提取出来,只要对pattern和Matcher有所了解就能解决。
源代码展示:
查看代码- package pta41;
- import java.util.Scanner;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class Main {
- public static void main(String[] args)
- {
- Scanner in = new Scanner(System.in);
- String S = in.nextLine();
- int sum=0;
- Pattern x=Pattern.compile("[0-9]+");
- while(!S.equals("end"))
- {
- sum=0;
- Matcher matcher=x.matcher(S);
- while(matcher.find())
- {
- zd n=new zd();
- sum+=n.zh(matcher.group());
- }
- System.out.println(sum);
- S=in.nextLine();
- }
- }
- }
- class zd {
- int str;
- public int zh(String x)
- {
- str=Integer.valueOf(x);
- return str;
- }
- }
复制代码 SourceMonitor生成的报表内容:
类图
代码分析总结:
本次作业比较简单,代码也不多,不做分析。
第四次作业第二题
题目:
点线形系列4-凸四边形的计算
用户输入一组选项和数据,进行与四边形有关的计算。
以下四边形顶点的坐标要求按顺序依次输入,连续输入的两个顶点是相邻顶点,第一个和最后一个输入的顶点相邻。
选项包括:
1:输入四个点坐标,判断是否是四边形、平行四边形,判断结果输出true/false,结果之间以一个英文空格符分隔。
2:输入四个点坐标,判断是否是菱形、矩形、正方形,判断结果输出true/false,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
3:输入四个点坐标,判断是凹四边形(false)还是凸四边形(true),输出四边形周长、面积,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
4:输入六个点坐标,前两个点构成一条直线,后四个点构成一个四边形或三角形,输出直线与四边形(也可能是三角形)相交的交点数量。如果交点有两个,再按面积从小到大输出四边形(或三角形)被直线分割成两部分的面积(不换行)。若直线与四边形或三角形的一条边线重合,输出"The line is coincide with one of the lines"。若后四个点不符合四边形或三角形的输入,输出"not a quadrilateral or triangle"。
后四个点构成三角形的情况:假设三角形一条边上两个端点分别是x、y,边线中间有一点z,另一顶点s:
1)符合要求的输入:顶点重复或者z与xy都相邻,如x x y s、x z y s、x y x s、s x y y。此时去除冗余点,保留一个x、一个y。
2) 不符合要求的输入:z 不与xy都相邻,如z x y s、x z s y、x s z y
5:输入五个点坐标,输出第一个是否在后四个点所构成的四边形(限定为凸四边形,不考虑凹四边形)或三角形(判定方法见选项4)的内部(若是四边形输出in the quadrilateral/outof the quadrilateral,若是三角形输出in the triangle/outof the triangle)。如果点在多边形的某条边上,输出"on the triangle或者on the quadrilateral"。若后四个点不符合四边形或三角形,输出"not a quadrilateral or triangle"。
输入格式:
基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。
输出格式:
基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
注意:输出的数据若小数点后超过3位,只保留小数点后3位,多余部分采用四舍五入规则进到最低位。小数点后若不足3位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333,1.0按格式输出为1.0
选项1、2、3中,若四边形四个点中有重合点,输出"points coincide"。
选项4中,若前两个输入线的点重合,输出"points coincide"。
试题分析
本题主要考察大量的点与线的判断以及点与面的判断
源代码展示:
查看代码- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String S = in.nextLine();
- if (S.charAt(1) != ':'||S.contains(", ")||S.charAt(S.length()-1)==',') {
- System.out.println("Wrong Format");
- return;
- }
- String[] str = S.split(":");
- if ("1".equals(str[0])) {
- point4 p1=new point4();
- p1.quadrilateral(str[1],1);
- System.out.println(p1.sbx +" "+p1.pxsbx);
- }
- if ("2".equals(str[0])) {
- point4 p1=new point4();
- p1.quadrilateral(str[1],1);
- if(p1.sbx)
- System.out.println(p1.lx +" "+p1.jx+" "+p1.zfx);
- else
- System.out.println("not a quadrilateral");
- }
- if ("3".equals(str[0])) {
- point4 p1=new point4();
- p1.quadrilateral(str[1],1);
- if(p1.t|| p1.a)
- p1.S=p1.s1+p1.s2;
- else
- p1.S= p1.s1-p1.s2;
- String c1=String.format("%."+3+"f",p1.c);String s2=String.format("%."+3+"f", p1.S);
- p1.c= Double.parseDouble(c1);p1.S= Double.parseDouble(s2);
- if(p1.sbx)
- System.out.println(p1.t+" "+p1.c+" "+p1.S);
- else
- System.out.println("not a quadrilateral");
- }
- if("4".equals(str[0]))
- {
- case4 p2=new case4();
- p2.point6(str[1]);
- System.out.print("p2.j");
- }
- if("5".equals(str[0]))
- {
- case5 p2=new case5();
- p2.point5(str[1]);
- }
- }
- }
- class point4{
- String[] l=new String[20];
- String[] s=new String[20];
- boolean sbx,pxsbx,jx,lx,zfx,t,a;
- double x1, y1, x2, y2, x3, y3, x4, y4,k4,k5,k6,l4,l5,l6,c,S,s1,s2;
- public void quadrilateral(String str,int b){
- l=str.split(" ");
- zz x=new zz();
- samepoint p=new samepoint();
- point3 triangle=new point3();
- sbx=false;pxsbx=false;jx=false;lx=false;zfx=false;t=false;a=false;
- int i,j;
- for(i=0;i<l.length;i++)
- {
- s=l[i].split(",");
- if (s.length != 2) {
- System.out.println("Wrong Format");
- System.exit(0);
- }
- for(j=0;j<s.length;j++)
- x.z(s[j]);
- }
- if (l.length != 4) {
- System.out.println("wrong number of points");
- System.exit(0);
- }
- s = l[0].split(",");x1 = Double.valueOf(s[0]);y1 = Double.valueOf(s[1]);
- s = l[1].split(",");x2 = Double.valueOf(s[0]);y2 = Double.valueOf(s[1]);
- s = l[2].split(",");x3 = Double.valueOf(s[0]);y3 = Double.valueOf(s[1]);
- s = l[3].split(",");x4 = Double.valueOf(s[0]);y4 = Double.valueOf(s[1]);
- triangle.sjx(x1,y1,x2,y2,x3,y3);
- s1= triangle.s;
- k4=(y4-y1)/(x4-x1);k5=(y4-y2)/(x4-x2);k6=(y4-y3)/(x4-x3);
- l4=Math.sqrt(Math.pow(x1-x4,2)+Math.pow(y1-y4,2));
- l5=Math.sqrt(Math.pow(x4-x2,2)+Math.pow(y4-y2,2));
- l6=Math.sqrt(Math.pow(x3-x4,2)+Math.pow(y3-y4,2));
- if(b==1)
- {
- if(triangle.inline(x4,y4,x1,y1,x2,y2)||triangle.inline(x4,y4,x1,y1,x3,y3)||triangle.inline(x4,y4,x3,y3,x2,y2)||triangle.inline(x1,y1,x2,y2,x3,y3))
- return;
- if(p.point(x1,x2,y1,y2)||p.point(x1,x3,y1,y3)||p.point(x1,x4,y1,y4)||p.point(x3,x2,y3,y2)||p.point(x4,x2,y4,y2)||p.point(x3,x4,y3,y4))
- {
- System.out.println("points coincide");
- System.exit(0);
- }
- if((!xj(x1,y1,x4,y4,x2,y2,x3,y3)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4))||(!xj(x2,y2,x3,y3,x1,y1,x4,y4)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4)))
- {
- sbx=true;t=true;
- }
- if((xj(x1,y1,x4,y4,x2,y2,x3,y3)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))||(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x3,y3,x4,y4,x1,y1,x2,y2))||(xj(x3,y3,x4,y4,x1,y1,x2,y2)&&xj(x1,y1,x3,y3,x2,y2,x4,y4)))
- {
- sbx=true;a=true;t=false;
- }
- if(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))
- {
- sbx=true;a=false;t=false;
- }
- if(((l5== triangle.l2&&l4==triangle.l3&&k4== triangle.k3)||(l4==triangle.l3&&l6==triangle.l1&&k4== triangle.k3)||(k5== triangle.k2&&l5== triangle.l2&&l6==triangle.l1))&&sbx)
- pxsbx=true;
- if(pxsbx&&triangle.zj)
- jx=true;
- if(triangle.l1==l4&&l4==l6&&l6==triangle.l3&&sbx)
- lx=true;
- if(jx&&lx)
- zfx=true;
- }
- c= triangle.l1+ triangle.l3+l4+l6;
- triangle.sjx(x1,y1,x3,y3,x4,y4);
- s2= triangle.s;
- S=s1+s2;
- if(b==2)
- {
- if(x1==x3)
- {
- triangle.sjx(x2,y2,x3,y3,x4,y4);
- s2= triangle.s;
- S=s1+s2;
- }
- }
- if(b==3)
- {
- if(pd(x1,y1,x2,y2,x3,y3,x4,y4))
- {
- if((!xj(x1,y1,x4,y4,x2,y2,x3,y3)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4))||(!xj(x2,y2,x3,y3,x1,y1,x4,y4)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4)))
- {
- sbx=true;t=true;
- }
- if((xj(x1,y1,x4,y4,x2,y2,x3,y3)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))||(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x3,y3,x4,y4,x1,y1,x2,y2))||(xj(x3,y3,x4,y4,x1,y1,x2,y2)&&xj(x1,y1,x3,y3,x2,y2,x4,y4)))
- {
- sbx=true;a=true;t=false;
- }
- if(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))
- {
- sbx=true;a=false;t=false;
- }
- if(t||a)
- S=s1+s2;
- else
- S= s1-s2;
- }
- else {
- if(triangle.inline2(x2,y2,x1,y1,x3,y3))
- triangle.sjx(x1,y1,x3,y3,x4,y4);
- if(triangle.inline2(x3,y3,x2,y2,x4,y4))
- triangle.sjx(x1,y1,x2,y2,x4,y4);
- if(triangle.inline2(x4,y4,x1,y1,x3,y3))
- triangle.sjx(x1,y1,x2,y2,x3,y3);
- }
- }
- }
- public boolean xj(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
- {
- double A1,B1,C1,A2,B2,C2,x,y;
- A1=y1-y2;B1=x2-x1;C1=y2*x1-y1*x2;
- A2=y3-y4;B2=x4-x3;C2=y4*x3-y3*x4;
- if(A1*B2==A2*B1)
- return false;
- x=(B2*C1-B1*C2)/(B1*A2-B2*A1);
- y=(A2*C1-A1*C2)/(A1*B2-A2*B1);
- if((x>x1&&x<x2||x<x1&&x>x2)&&(y>x1&&y<y2||y>y2&&y<y1))
- return true;
- else
- return false;
- }
- public void jd(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x,double y) {
- double A1, B1, C1, A2, B2, C2;
- A1 = y1 - y2;B1 = x2 - x1;C1 = y2 * x1 - y1 * x2;
- A2 = y3 - y4;B2 = x4 - x3;C2 = y4 * x3 - y3 * x4;
- x = (B2 * C1 - B1 * C2) / (B1 * A2 - B2 * A1);
- y = (A2 * C1 - A1 * C2) / (A1 * B2 - A2 * B1);
- }
- public boolean pd(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){
- //判断四边形还是三角形
- point3 s=new point3();
- samepoint p=new samepoint();
- if((x1==x2&&x2==x3&&y1==y2&&y2==y3)||(x1==x2&&x2==x4&&y1==y2&&y2==y4)||(x1==x3&&x3==x4&&y1==y3&&y3==y4)||(x2==x3&&x3==x4&&y2==y3&&y3==y4))
- {
- System.out.println("not a quadrilateral or triangle");
- System.exit(0);
- }
- if((p.point(x1,x2,y1,y2)||p.point(x1,x3,y1,y3)||p.point(x3,x4,y3,y4)||s.inline(x3,y3,x1,y1,x2,y2))&&(s.pdsjx(x1,y1,x3,y3,x4,y4)||s.pdsjx(x1,y1,x2,y2,x4,y4)||s.pdsjx(x1,y1,x2,y2,x3,y3)))
- return false;
- else if((!xj(x1,y1,x4,y4,x2,y2,x3,y3)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4))||(!xj(x2,y2,x3,y3,x1,y1,x4,y4)&&!xj(x1,y1,x2,y2,x3,y3,x4,y4)))
- return true;
- else{
- System.out.println("not a quadrilateral or triangle");
- System.exit(0);
- return false;
- }
- }
- }
- class case4{
- String[] l=new String[50];
- String[] s=new String[50];
- double x1, y1, x2, y2,S,s1,s2,x5,x6,x7,x8,y5,y6,y7,y8,j;
- public void point6(String str)
- {
- j=0;
- l=str.split(" ");
- zz x=new zz();
- samepoint p=new samepoint();
- point3 t=new point3();
- point4 q=new point4();
- q.quadrilateral(str.substring(l[1].length()+1),3);
- s=l[0].split(",");x1 = Double.valueOf(s[0]);y1 = Double.valueOf(s[1]);
- s=l[1].split(",");x2 = Double.valueOf(s[0]);y2 = Double.valueOf(s[1]);
- if(p.point(x1,x2,y1,y2)){
- System.out.println("points coincide");
- System.exit(0);
- }
- q.jd(x1,y1,x2,y2,q.x2,q.y2,q.x3,q.y3,x6,y6);
- q.jd(x1,y1,x2,y2,q.x2,q.y2,q.x1,q.y1,x5,y5);
- q.jd(x1,y1,x2,y2,q.x4,q.y4,q.x3,q.y3,x7,y7);
- q.jd(x1,y1,x2,y2,q.x1,q.y1,q.x4,q.y4,x8,y8);
- if(t.inline2(q.x1,q.y1,x1,y1,x2,y2)||t.inline2(q.x2,q.y2,x1,y1,x2,y2)||t.inline2(q.x3,q.y3,x1,y1,x2,y2)||t.inline2(q.x4,q.y4,x1,y1,x2,y2))
- j+=1;
- if(!q.sbx)
- {
- if(t.inline2(q.x1,q.y1,x1,y1,x2,y2)){
- if(t.inline2(q.x2,q.y2,x1,y1,x2,y2)||t.inline2(q.x3,q.y3,x1,y1,x2,y2)){
- System.out.println("The line is coincide with one of the lines");
- System.exit(0);
- }
- S=t.s;
- if(q.xj(x1,y1,x2,y2,q.x2,q.y2,q.x3,q.y3)){
- j+=1;
- t.sjx(x1,y1,x2,y2,x6,y6);
- s1=t.s;
- s2=S-t.s;
- }
- }
- }
- }
- }
- class case5{
- String[] l=new String[50];
- String[] s=new String[50];
- double x1, y1;
- public void point5(String str){
- l=str.split(" ");
- zz x=new zz();
- samepoint p=new samepoint();
- point3 t=new point3();
- point4 q=new point4();
- q.quadrilateral(str.substring(l[0].length()+1),2);
- s=l[0].split(",");
- x1 = Double.valueOf(s[0]);y1 = Double.valueOf(s[1]);
- if(q.pd(q.x1,q.y1,q.x2,q.y2,q.x3,q.y3,q.x4,q.y4))
- {
- if(t.inline2(x1,y1,q.x1,q.y1,q.x2,q.y2)||t.inline2(x1,y1,q.x2,q.y2,q.x3,q.y3)||t.inline2(x1,y1,q.x3,q.y3,q.x4,q.y4)||t.inline2(x1,y1,q.x1,q.y1,q.x4,q.y4))
- {
- System.out.println("on the quadrilateral");
- System.exit(0);
- }
- double S= q.S;
- t.sjx(x1,y1,q.x1,q.y1,q.x2,q.y2);double s1=t.s;
- t.sjx(x1,y1,q.x2,q.y2,q.x3,q.y3);double s2=t.s;
- t.sjx(x1,y1,q.x3,q.y3,q.x4,q.y4);double s3=t.s;
- t.sjx(x1,y1,q.x1,q.y1,q.x4,q.y4);double s4=t.s;
- if(Math.abs(S-s1-s2-s3-s4)<0.001)
- System.out.println("in the quadrilateral");
- else
- System.out.println("outof the quadrilateral");
- }
- else
- {
- if(t.inline2(x1,y1,q.x1,q.y1,q.x2,q.y2)||t.inline2(x1,y1,q.x2,q.y2,q.x3,q.y3)||t.inline2(x1,y1,q.x3,q.y3,q.x4,q.y4)||t.inline2(x1,y1,q.x1,q.y1,q.x4,q.y4))
- {
- System.out.println("on the triangle");
- System.exit(0);
- }
- if(p.point(x1,q.x1,y1,q.y1)||p.point(x1,q.x2,y1,q.y2)||p.point(x1,q.x3,y1,q.y3)||p.point(x1,q.x4,y1,q.y4))
- {
- System.out.println("on the triangle");
- System.exit(0);
- }
- double S= q.S;
- t.sjx(x1,y1,q.x1,q.y1,q.x2,q.y2);double s1=t.s;
- t.sjx(x1,y1,q.x2,q.y2,q.x3,q.y3);double s2=t.s;
- t.sjx(x1,y1,q.x3,q.y3,q.x4,q.y4);double s3=t.s;
- t.sjx(x1,y1,q.x1,q.y1,q.x4,q.y4);double s4=t.s;
- if(Math.abs(S-s1-s2-s3-s4)<0.001)
- System.out.println("in the triangle");
- else
- System.out.println("outof the triangle");
- }
- }
- }
- class samepoint{
- public boolean point(double x1,double x2,double y1,double y2)
- {
- if(x1==x2&&y1==y2)
- return true;
- else
- return false;
- }
- }
- class zz {
- public void z(String s){
- if (!s.matches("[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)")||s.matches("[+-]?")||s.length()>6) {
- System.out.println("Wrong Format");
- System.exit(0);
- }
- }
- }
- class point3{
- boolean zj;
- double l1,l2,l3,k1,k2,k3,s,c;
- public void sjx(double x1,double y1,double x2,double y2,double x3,double y3)
- {
- zj=false;
- l1=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
- l2=Math.sqrt(Math.pow(x1-x3,2)+Math.pow(y1-y3,2));
- l3=Math.sqrt(Math.pow(x3-x2,2)+Math.pow(y3-y2,2));
- if(Math.abs(l1*l1+l3*l3-l2*l2)<0.000001)
- zj=true;
- k1=(y2-y1)/(x2-x1);
- k2=(y3-y1)/(x3-x1);
- k3=(y3-y2)/(x3-x2);
- c=l1+l2+l3;
- s=Math.sqrt((c/2)*(c/2-l1)*(c/2-l2)*(c/2-l3));
- }
- public boolean pdsjx(double x1,double y1,double x2,double y2,double x3,double y3)
- {
- if(inline1(x1,y1,x2,y2,x3,y3))
- return false;
- else
- return true;
- }
- public boolean inline(double x1,double y1,double x2,double y2,double x3,double y3)
- {
- double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
- if(Math.abs(l)<0.00001)
- return true;
- else
- return false;
- }
- public boolean in(double x,double y,double x1,double y1,double x2,double y2)
- {
- if((x>x1&&x<x2||x<x1&&x>x2)&&(y>x1&&y<y2||y>y2&&y<y1))
- return true;
- else
- return false;
- }
- public boolean inline1(double x1,double y1,double x2,double y2,double x3,double y3)
- {
- double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
- if(Math.abs(l)<0.00001&&in(x1,y1,x2,y2,x3,y3))
- return true;
- else
- return false;
- }
- public boolean inline2(double x1,double y1,double x2,double y2,double x3,double y3)
- {
- double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
- if(Math.abs(l)<0.00001&&(in(x1,y1,x2,y2,x3,y3)||(x1==x2&&y1==y2)||x1==x3&&y1==y3))
- return true;
- else
- return false;
- }
- }
复制代码 SourceMonitor生成的报表内容:
类图
略
代码分析总结:
本题是对上一题按照给予的类图进行修改,但因为时间有限,在考试时没能写完,在考完回寝室之后才写完代码。
3.踩坑心得:
在写期中考试的题目时忘记用try来判断错误输入了,导致卡了较久。
4.改进建议
在写题时要先对题目总体进行分析,先画出类图的大致框架再去码代码,这样写题速度会提升较多。
5.总结
通过这几次作业,我对类的分工越来越熟练,提升也比较明显,也认识到了细分类的重要性,代码的复杂度在不断降低,复用性在不断上升。
建议:今后也要重视问题分析,仔细分类,也多去了解多态的使用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |