pta第二次博客

打印 上一主题 下一主题

主题 801|帖子 801|积分 2403

目录

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有所了解就能解决。
源代码展示:
  查看代码
  1. package pta41;
  2. import java.util.Scanner;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5. public class Main {
  6.     public static void main(String[] args)
  7.     {
  8.         Scanner in = new Scanner(System.in);
  9.         String S = in.nextLine();
  10.         int sum=0;
  11.         Pattern x=Pattern.compile("[0-9]+");
  12.         while(!S.equals("end"))
  13.         {
  14.             sum=0;
  15.             Matcher matcher=x.matcher(S);
  16.             while(matcher.find())
  17.             {
  18.                 zd n=new zd();
  19.                 sum+=n.zh(matcher.group());
  20.             }
  21.             System.out.println(sum);
  22.             S=in.nextLine();
  23.         }
  24.     }
  25. }
  26. class zd {
  27.     int str;
  28.     public int zh(String x)
  29.     {
  30.         str=Integer.valueOf(x);
  31.         return str;
  32.     }
  33. }
复制代码
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"。
试题分析
本题主要考察大量的点与线的判断以及点与面的判断
源代码展示:
  查看代码
  1. import java.util.Scanner;
  2. public class Main {
  3.     public static void main(String[] args) {
  4.         Scanner in = new Scanner(System.in);
  5.         String S = in.nextLine();
  6.         if (S.charAt(1) != ':'||S.contains(", ")||S.charAt(S.length()-1)==',') {
  7.             System.out.println("Wrong Format");
  8.             return;
  9.         }
  10.         String[] str = S.split(":");
  11.         if ("1".equals(str[0])) {
  12.             point4 p1=new point4();
  13.             p1.quadrilateral(str[1],1);
  14.             System.out.println(p1.sbx +" "+p1.pxsbx);
  15.         }
  16.         if ("2".equals(str[0])) {
  17.             point4 p1=new point4();
  18.             p1.quadrilateral(str[1],1);
  19.             if(p1.sbx)
  20.                 System.out.println(p1.lx +" "+p1.jx+" "+p1.zfx);
  21.             else
  22.                 System.out.println("not a quadrilateral");
  23.         }
  24.         if ("3".equals(str[0])) {
  25.             point4 p1=new point4();
  26.             p1.quadrilateral(str[1],1);
  27.             if(p1.t|| p1.a)
  28.                 p1.S=p1.s1+p1.s2;
  29.             else
  30.                 p1.S= p1.s1-p1.s2;
  31.             String c1=String.format("%."+3+"f",p1.c);String s2=String.format("%."+3+"f", p1.S);
  32.             p1.c= Double.parseDouble(c1);p1.S= Double.parseDouble(s2);
  33.             if(p1.sbx)
  34.                 System.out.println(p1.t+" "+p1.c+" "+p1.S);
  35.             else
  36.                 System.out.println("not a quadrilateral");
  37.         }
  38.         if("4".equals(str[0]))
  39.         {
  40.             case4 p2=new case4();
  41.             p2.point6(str[1]);
  42.             System.out.print("p2.j");
  43.         }
  44.         if("5".equals(str[0]))
  45.         {
  46.             case5 p2=new case5();
  47.             p2.point5(str[1]);
  48.         }
  49.     }
  50. }
  51. class point4{
  52.     String[] l=new String[20];
  53.     String[] s=new String[20];
  54.     boolean sbx,pxsbx,jx,lx,zfx,t,a;
  55.     double x1, y1, x2, y2, x3, y3, x4, y4,k4,k5,k6,l4,l5,l6,c,S,s1,s2;
  56.     public  void quadrilateral(String str,int b){
  57.         l=str.split(" ");
  58.         zz x=new zz();
  59.         samepoint p=new samepoint();
  60.         point3 triangle=new point3();
  61.         sbx=false;pxsbx=false;jx=false;lx=false;zfx=false;t=false;a=false;
  62.         int i,j;
  63.         for(i=0;i<l.length;i++)
  64.         {
  65.             s=l[i].split(",");
  66.             if (s.length != 2) {
  67.                 System.out.println("Wrong Format");
  68.                 System.exit(0);
  69.             }
  70.             for(j=0;j<s.length;j++)
  71.                 x.z(s[j]);
  72.         }
  73.         if (l.length != 4) {
  74.             System.out.println("wrong number of points");
  75.             System.exit(0);
  76.         }
  77.         s = l[0].split(",");x1 = Double.valueOf(s[0]);y1 = Double.valueOf(s[1]);
  78.         s = l[1].split(",");x2 = Double.valueOf(s[0]);y2 = Double.valueOf(s[1]);
  79.         s = l[2].split(",");x3 = Double.valueOf(s[0]);y3 = Double.valueOf(s[1]);
  80.         s = l[3].split(",");x4 = Double.valueOf(s[0]);y4 = Double.valueOf(s[1]);
  81.         triangle.sjx(x1,y1,x2,y2,x3,y3);
  82.         s1= triangle.s;
  83.         k4=(y4-y1)/(x4-x1);k5=(y4-y2)/(x4-x2);k6=(y4-y3)/(x4-x3);
  84.         l4=Math.sqrt(Math.pow(x1-x4,2)+Math.pow(y1-y4,2));
  85.         l5=Math.sqrt(Math.pow(x4-x2,2)+Math.pow(y4-y2,2));
  86.         l6=Math.sqrt(Math.pow(x3-x4,2)+Math.pow(y3-y4,2));
  87.         if(b==1)
  88.         {
  89.             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))
  90.                 return;
  91.             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))
  92.             {
  93.                 System.out.println("points coincide");
  94.                 System.exit(0);
  95.             }
  96.             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)))
  97.             {
  98.                 sbx=true;t=true;
  99.             }
  100.             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)))
  101.             {
  102.                 sbx=true;a=true;t=false;
  103.             }
  104.             if(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))
  105.             {
  106.                 sbx=true;a=false;t=false;
  107.             }
  108.             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)
  109.                 pxsbx=true;
  110.             if(pxsbx&&triangle.zj)
  111.                 jx=true;
  112.             if(triangle.l1==l4&&l4==l6&&l6==triangle.l3&&sbx)
  113.                 lx=true;
  114.             if(jx&&lx)
  115.                 zfx=true;
  116.         }
  117.         c= triangle.l1+ triangle.l3+l4+l6;
  118.         triangle.sjx(x1,y1,x3,y3,x4,y4);
  119.         s2= triangle.s;
  120.         S=s1+s2;
  121.         if(b==2)
  122.         {
  123.             if(x1==x3)
  124.             {
  125.                 triangle.sjx(x2,y2,x3,y3,x4,y4);
  126.                 s2= triangle.s;
  127.                 S=s1+s2;
  128.             }
  129.         }
  130.         if(b==3)
  131.         {
  132.             if(pd(x1,y1,x2,y2,x3,y3,x4,y4))
  133.             {
  134.                 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)))
  135.                 {
  136.                     sbx=true;t=true;
  137.                 }
  138.                 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)))
  139.                 {
  140.                     sbx=true;a=true;t=false;
  141.                 }
  142.                 if(xj(x2,y2,x3,y3,x1,y1,x4,y4)&&xj(x1,y1,x2,y2,x3,y3,x4,y4))
  143.                 {
  144.                     sbx=true;a=false;t=false;
  145.                 }
  146.                 if(t||a)
  147.                     S=s1+s2;
  148.                 else
  149.                     S= s1-s2;
  150.             }
  151.             else {
  152.                 if(triangle.inline2(x2,y2,x1,y1,x3,y3))
  153.                     triangle.sjx(x1,y1,x3,y3,x4,y4);
  154.                 if(triangle.inline2(x3,y3,x2,y2,x4,y4))
  155.                     triangle.sjx(x1,y1,x2,y2,x4,y4);
  156.                 if(triangle.inline2(x4,y4,x1,y1,x3,y3))
  157.                     triangle.sjx(x1,y1,x2,y2,x3,y3);
  158.             }
  159.         }
  160.     }
  161.     public boolean xj(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
  162.     {
  163.         double A1,B1,C1,A2,B2,C2,x,y;
  164.         A1=y1-y2;B1=x2-x1;C1=y2*x1-y1*x2;
  165.         A2=y3-y4;B2=x4-x3;C2=y4*x3-y3*x4;
  166.         if(A1*B2==A2*B1)
  167.             return false;
  168.         x=(B2*C1-B1*C2)/(B1*A2-B2*A1);
  169.         y=(A2*C1-A1*C2)/(A1*B2-A2*B1);
  170.         if((x>x1&&x<x2||x<x1&&x>x2)&&(y>x1&&y<y2||y>y2&&y<y1))
  171.             return true;
  172.         else
  173.             return false;
  174.     }
  175.     public void jd(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,double x,double y) {
  176.         double A1, B1, C1, A2, B2, C2;
  177.         A1 = y1 - y2;B1 = x2 - x1;C1 = y2 * x1 - y1 * x2;
  178.         A2 = y3 - y4;B2 = x4 - x3;C2 = y4 * x3 - y3 * x4;
  179.         x = (B2 * C1 - B1 * C2) / (B1 * A2 - B2 * A1);
  180.         y = (A2 * C1 - A1 * C2) / (A1 * B2 - A2 * B1);
  181.     }
  182.     public boolean pd(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){
  183.         //判断四边形还是三角形
  184.         point3 s=new point3();
  185.         samepoint p=new samepoint();
  186.         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))
  187.         {
  188.             System.out.println("not a quadrilateral or triangle");
  189.             System.exit(0);
  190.         }
  191.         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)))
  192.             return false;
  193.         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)))
  194.                 return true;
  195.         else{
  196.             System.out.println("not a quadrilateral or triangle");
  197.             System.exit(0);
  198.             return false;
  199.         }
  200.     }
  201. }
  202. class case4{
  203.     String[] l=new String[50];
  204.     String[] s=new String[50];
  205.     double x1, y1, x2, y2,S,s1,s2,x5,x6,x7,x8,y5,y6,y7,y8,j;
  206.     public void point6(String str)
  207.     {
  208.         j=0;
  209.         l=str.split(" ");
  210.         zz x=new zz();
  211.         samepoint p=new samepoint();
  212.         point3 t=new point3();
  213.         point4 q=new point4();
  214.         q.quadrilateral(str.substring(l[1].length()+1),3);
  215.         s=l[0].split(",");x1 = Double.valueOf(s[0]);y1 = Double.valueOf(s[1]);
  216.         s=l[1].split(",");x2 = Double.valueOf(s[0]);y2 = Double.valueOf(s[1]);
  217.         if(p.point(x1,x2,y1,y2)){
  218.             System.out.println("points coincide");
  219.             System.exit(0);
  220.         }
  221.         q.jd(x1,y1,x2,y2,q.x2,q.y2,q.x3,q.y3,x6,y6);
  222.         q.jd(x1,y1,x2,y2,q.x2,q.y2,q.x1,q.y1,x5,y5);
  223.         q.jd(x1,y1,x2,y2,q.x4,q.y4,q.x3,q.y3,x7,y7);
  224.         q.jd(x1,y1,x2,y2,q.x1,q.y1,q.x4,q.y4,x8,y8);
  225.         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))
  226.             j+=1;
  227.         if(!q.sbx)
  228.         {
  229.             if(t.inline2(q.x1,q.y1,x1,y1,x2,y2)){
  230.                 if(t.inline2(q.x2,q.y2,x1,y1,x2,y2)||t.inline2(q.x3,q.y3,x1,y1,x2,y2)){
  231.                     System.out.println("The line is coincide with one of the lines");
  232.                     System.exit(0);
  233.                 }
  234.                 S=t.s;
  235.                 if(q.xj(x1,y1,x2,y2,q.x2,q.y2,q.x3,q.y3)){
  236.                     j+=1;
  237.                     t.sjx(x1,y1,x2,y2,x6,y6);
  238.                     s1=t.s;
  239.                     s2=S-t.s;
  240.                 }
  241.             }
  242.         }
  243.     }
  244. }
  245. class case5{
  246.     String[] l=new String[50];
  247.     String[] s=new String[50];
  248.     double x1, y1;
  249.     public void point5(String str){
  250.         l=str.split(" ");
  251.         zz x=new zz();
  252.         samepoint p=new samepoint();
  253.         point3 t=new point3();
  254.         point4 q=new point4();
  255.         q.quadrilateral(str.substring(l[0].length()+1),2);
  256.         s=l[0].split(",");
  257.         x1 = Double.valueOf(s[0]);y1 = Double.valueOf(s[1]);
  258.         if(q.pd(q.x1,q.y1,q.x2,q.y2,q.x3,q.y3,q.x4,q.y4))
  259.         {
  260.             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))
  261.             {
  262.                 System.out.println("on the quadrilateral");
  263.                 System.exit(0);
  264.             }
  265.             double S= q.S;
  266.             t.sjx(x1,y1,q.x1,q.y1,q.x2,q.y2);double s1=t.s;
  267.             t.sjx(x1,y1,q.x2,q.y2,q.x3,q.y3);double s2=t.s;
  268.             t.sjx(x1,y1,q.x3,q.y3,q.x4,q.y4);double s3=t.s;
  269.             t.sjx(x1,y1,q.x1,q.y1,q.x4,q.y4);double s4=t.s;
  270.             if(Math.abs(S-s1-s2-s3-s4)<0.001)
  271.                 System.out.println("in the quadrilateral");
  272.             else
  273.                 System.out.println("outof the quadrilateral");
  274.         }
  275.         else
  276.         {
  277.             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))
  278.             {
  279.                 System.out.println("on the triangle");
  280.                 System.exit(0);
  281.             }
  282.             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))
  283.             {
  284.                 System.out.println("on the triangle");
  285.                 System.exit(0);
  286.             }
  287.             double S= q.S;
  288.             t.sjx(x1,y1,q.x1,q.y1,q.x2,q.y2);double s1=t.s;
  289.             t.sjx(x1,y1,q.x2,q.y2,q.x3,q.y3);double s2=t.s;
  290.             t.sjx(x1,y1,q.x3,q.y3,q.x4,q.y4);double s3=t.s;
  291.             t.sjx(x1,y1,q.x1,q.y1,q.x4,q.y4);double s4=t.s;
  292.             if(Math.abs(S-s1-s2-s3-s4)<0.001)
  293.                 System.out.println("in the triangle");
  294.             else
  295.                 System.out.println("outof the triangle");
  296.         }
  297.     }
  298. }
  299. class samepoint{
  300.     public boolean point(double x1,double x2,double y1,double y2)
  301.     {
  302.         if(x1==x2&&y1==y2)
  303.             return true;
  304.         else
  305.             return false;
  306.     }
  307. }
  308. class zz {
  309.     public void z(String s){
  310.         if (!s.matches("[+-]?(0|(0\\.\\d+)?|[1-9][0-9]*(\\.\\d+)?)")||s.matches("[+-]?")||s.length()>6) {
  311.             System.out.println("Wrong Format");
  312.             System.exit(0);
  313.         }
  314.     }
  315. }
  316. class point3{
  317.     boolean zj;
  318.     double l1,l2,l3,k1,k2,k3,s,c;
  319.     public void sjx(double x1,double y1,double x2,double y2,double x3,double y3)
  320.     {
  321.         zj=false;
  322.         l1=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
  323.         l2=Math.sqrt(Math.pow(x1-x3,2)+Math.pow(y1-y3,2));
  324.         l3=Math.sqrt(Math.pow(x3-x2,2)+Math.pow(y3-y2,2));
  325.         if(Math.abs(l1*l1+l3*l3-l2*l2)<0.000001)
  326.             zj=true;
  327.         k1=(y2-y1)/(x2-x1);
  328.         k2=(y3-y1)/(x3-x1);
  329.         k3=(y3-y2)/(x3-x2);
  330.         c=l1+l2+l3;
  331.         s=Math.sqrt((c/2)*(c/2-l1)*(c/2-l2)*(c/2-l3));
  332.     }
  333.     public boolean pdsjx(double x1,double y1,double x2,double y2,double x3,double y3)
  334.     {
  335.         if(inline1(x1,y1,x2,y2,x3,y3))
  336.             return false;
  337.         else
  338.             return true;
  339.     }
  340.     public boolean inline(double x1,double y1,double x2,double y2,double x3,double y3)
  341.     {
  342.         double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
  343.         if(Math.abs(l)<0.00001)
  344.             return true;
  345.         else
  346.             return false;
  347.     }
  348.     public boolean in(double x,double y,double x1,double y1,double x2,double y2)
  349.     {
  350.         if((x>x1&&x<x2||x<x1&&x>x2)&&(y>x1&&y<y2||y>y2&&y<y1))
  351.             return true;
  352.         else
  353.             return false;
  354.     }
  355.     public boolean inline1(double x1,double y1,double x2,double y2,double x3,double y3)
  356.     {
  357.         double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
  358.         if(Math.abs(l)<0.00001&&in(x1,y1,x2,y2,x3,y3))
  359.             return true;
  360.         else
  361.             return false;
  362.     }
  363.     public boolean inline2(double x1,double y1,double x2,double y2,double x3,double y3)
  364.     {
  365.         double l=((y2-y3)*x1-(x2-x3)*y1-y2*x3+y3*x2)/(Math.sqrt((y2-y3)*(y2-y3)+(x2-x3)*(x2-x3)));
  366.         if(Math.abs(l)<0.00001&&(in(x1,y1,x2,y2,x3,y3)||(x1==x2&&y1==y2)||x1==x3&&y1==y3))
  367.             return true;
  368.         else
  369.             return false;
  370.     }
  371. }
复制代码
SourceMonitor生成的报表内容:

类图

代码分析总结:
本题是对上一题按照给予的类图进行修改,但因为时间有限,在考试时没能写完,在考完回寝室之后才写完代码。
3.踩坑心得:

在写期中考试的题目时忘记用try来判断错误输入了,导致卡了较久。

4.改进建议

在写题时要先对题目总体进行分析,先画出类图的大致框架再去码代码,这样写题速度会提升较多。
5.总结

通过这几次作业,我对类的分工越来越熟练,提升也比较明显,也认识到了细分类的重要性,代码的复杂度在不断降低,复用性在不断上升。
建议:今后也要重视问题分析,仔细分类,也多去了解多态的使用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表