PTA题目、超星作业以及期中考试的总结

一·前言:

  (1)经历了这几次PTA作业,超星链表迭代作业,以及期中考试,我感觉考查的知识点很多:字符串的输出和输入,强制转化变量的类型,split函数的应用,逻辑思维能力,全面考虑问题的能力,方法编写能力,正则表达式练习。其中,主要题目是图形界面类设计编写,银行业务类设计编写。

  (2)题量我觉得适中,不简单,需要花很多时间来写代码,学习新的东西。

  (3)PTA的挺难的(但是当时也写的很难受),题目量也多一点,考察我们细心和和对知识的掌握,对我们逻辑思维能力,全面考虑问题的能力的考察。超星链表迭代作业是我们的课堂作业,难度适中。期中考试主要考察和PTA图形界面类设计编写相似,每一题是上一题的迭代。但是更简单。

  (4)我的做题时间比较长,因为我基础不太好,但是最后也写完了,在同学帮助下。

二·设计与分析:

    1、PTA图形界面设计题:

(1)题目集4 7-1:输入连个点的坐标,计算两点之间的距离

复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);       
        String a = input.nextLine();                
        int m=0;
        double s=0,x1=0,x2=0,y1=0,y2=0; 
        for(int j=0;j<a.length();j++) {
            if(a.charAt(j)==' ') {
                m++;
            }           
            if(m>1) {
                System.out.println("wrong number of points");
                System.exit(0);
            }           
            else if ((a.charAt(j)=='+'&&a.charAt(j+1)=='+')||
                     (a.charAt(j)=='-'&&a.charAt(j+1)=='-')||
                     (a.charAt(j)=='+'&&a.charAt(j+1)=='-')|| 
                     (a.charAt(j)=='-'&&a.charAt(j+1)=='+')||
                     (a.charAt(j)=='.'&&a.charAt(j+1)==',')||
                     (a.charAt(j)==','&&a.charAt(j+1)=='.')|| 
                     (a.charAt(j)=='0'&&a.charAt(j+1)=='0')||
                     (a.charAt(j)=='.'&&a.charAt(j+1)==' ')||
                     (a.charAt(j)==' '&&a.charAt(j+1)=='.')||
                     (a.charAt(j)=='.'&&a.charAt(j+1)=='.')||
                     (a.charAt(j)==' '&&a.charAt(j+1)==',')||
                     (a.charAt(j)==','&&a.charAt(j+1)==' ')||
                     (a.charAt(j)==' '&&a.charAt(j+1)==' ')||
                     (a.charAt(j)==','&&a.charAt(j+1)==',')||
                     (a.charAt(0)=='.'||a.charAt(0)==',')) {
                System.out.println("Wrong Format");
                System.exit(0);
            }           
        }  
        if(m==0){
            System.out.println("Wrong Format");
                System.exit(0);
        }
        for(int j=0;j<a.length();j++) {
            
                String[] c = a.split(" ");        
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                
                x1=Double.parseDouble(d[0]);
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);               
                s=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));                                                                  
        }       
                System.out.println(s);
    }
}
复制代码

*这题,我是首先对题目大致的构思,用字符串表示数据,然后用split函数分开每一个点,最后用para方法强制转化类型,从String转为double型。在计算计算两点之间的距离。

但是这题老师没有开放测试点,导致有很多非法输出,如下:

若输入格式非法,输出"Wrong Format"。
若输入格式合法但坐标点的数量超过两个,输出“wrong number of points”。

*这些很多没有考虑,导致一开始提交分数不高,最后在慢慢调试,寻找非法输出后,终于对了。

 

(2)题目集4 7-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"。

  

复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);                               
        double m=0,x1=0,x2=0,y1=0,y2=0,x3=0,x4=0,y3=0,y4=0,t=0,sum=0;
        String a = in.nextLine();
        int choice=Integer.parseInt(a.substring(0,1));       
        for(int i=0;i<a.length()-1;i++) {
            if(a.charAt(i)==' ') {
                sum++;
            }
        }        
        for(int j=0;j<a.length()-1;j++){                       
                 if((a.charAt(j)=='+'&&a.charAt(j+1)=='+')||(a.charAt(j)=='-'&&a.charAt(j+1)=='-')||(a.charAt(j)=='+'&&a.charAt(j+1)=='-')||(a.charAt(j)=='-'&&a.charAt(j+1)=='+')||(a.charAt(j)=='.'&&a.charAt(j+1)==',')||(a.charAt(j)==','&&a.charAt(j+1)=='.')|| (a.charAt(j)=='0'&&a.charAt(j+1)=='0')||(a.charAt(j)=='.'&&a.charAt(j+1)==' ')||(a.charAt(j)==' '&&a.charAt(j+1)=='.')||(a.charAt(j)=='.'&&a.charAt(j+1)=='.')||(a.charAt(j)==' '&&a.charAt(j+1)==',')|| (a.charAt(j)==','&&a.charAt(j+1)==' ')||(a.charAt(j)==' '&&a.charAt(j+1)==' ')||(a.charAt(j)==','&&a.charAt(j+1)==',')||a.charAt(0)=='.'||a.charAt(0)==','||sum==0){
                    System.out.println("Wrong Format");
                    System.exit(0);
            }          
             }
        if(sum==0){
            System.out.println("Wrong Format");
                System.exit(0);
        }
        if(choice>5||choice<1) {
            System.out.println("Wrong Format");
                   System.exit(0);
        }
        if(choice==1) {                                         
            String[] c = a.split(" ");           
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");            
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            
            if(x1==x2&&y1==y2) {
                System.out.println("points coincide");                
                                 }
             else if(sum!=1) {
                 System.out.println("wrong number of points");
                 
             }
             else if((x1-x2)==0) {
                System.out.println("Slope does not exist");
                
            } 
             else {
                 m=(y1-y2)/(x1-x2);
                 System.out.println(m);
                 
             }
         }       
          if(choice==2) {             
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");           
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            //m=(y2-y3)/(x2-x3);
            //t=(Math.abs(y1-m*x1-m*x3-y3))/(Math.sqrt(1+m*m));
            t=Math.abs((y2-y3)*x1+(x3-x2)*y1+x2*y3-y2*x3)/Math.sqrt((y2-y3)*(y2-y3)+(x3-x2)*(x3-x2));
            if((x2==x3&&y2==y3)) {
                   System.out.println("points coincide");
                   System.exit(0);
                                                                        } 
            else if(sum!=2) {
                System.out.println("wrong number of points");
                System.exit(0);
                        }           
            else {                                        
            System.out.println(t);
            System.exit(0);
            }
        }
          if(choice==3) {                
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");             
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);            
            m=(y1-y2)/(x1-x2);
            t=(y3-y2)/(x3-x2);
             if(sum!=2) {
                   System.out.println("wrong number of points");
                   System.exit(0);
                           }
            else if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)) {
                  System.out.println("points coincide");
                  System.exit(0);
            }
             else if((x1==x2)&&(x1==x3)||(x1==x3)&&(x1==x2)||(x2==x3)&&(x2==x1)) {
                 System.out.println("true");
                System.exit(0);                                               
                                   }
            else if((x1==x2)&&(x1!=x3)||(x1==x3)&&(x1!=x2)||(x2==x3)&&(x2!=x1)) {
                 System.out.println("false");
                System.exit(0);                                               
                                   }
            else if(m==t){
                System.out.println("true");
                System.exit(0);
            }
            else {
                System.out.println("false");
                System.exit(0);
            }           
        }
         if(choice==4) {            
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");
            String[] g = c[3].split(",");            
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            x4=Double.parseDouble(g[0]);
            y4=Double.parseDouble(g[1]);
            m=(y1-y2)/(x1-x2);
            t=(y4-y3)/(x4-x3);        
              if(sum!=3) {
                   System.out.println("wrong number of points");
                   System.exit(0);
                           }
            else if((x1==x2&&y1==y2)||(x3==x4&&y3==y4)) {
                 System.out.println("points coincide");
                 System.exit(0);
                                  }
            else if((x1==x2)&&(y1!=y2)&&(x3==x4)&&(y3!=y4)) {
                 System.out.println("true");
                System.exit(0);                                               
                                   }
            else if((x1==x2)&&(x3!=x4)) {
                 System.out.println("false");
                System.exit(0);               
            }
            else if((x3==x4)&&(x1!=x2)) {
                 System.out.println("false");
                System.exit(0);               
            }
            else if(m==t){
                System.out.println("true");
                System.exit(0);
            }
            else {
                System.out.println("false");
                System.exit(0);
            }           
        }
         if(choice==5) {
              
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");
            String[] g = c[3].split(",");           
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            x4=Double.parseDouble(g[0]);
            y4=Double.parseDouble(g[1]);
            m=(y1-y2)/(x1-x2);
            t=(y4-y3)/(x4-x3);
             float x=(float)((y1+m*x1-y3-t*x3)/(t-m));
             float y=(float)(y1+m*(x-x1)); 
             if(sum!=3) {
                System.out.println("wrong number of points");
                System.exit(0);
                        }
            else if((x1==x2&&y1==y2)||(x3==x4&&y3==y4)) {
                System.out.println("points coincide");
                System.exit(0);
            }
                else if((x1==x2&&y1!=y2)&&(x3==x4&&y3!=y4)) {
                   System.out.println("is parallel lines,have no intersection point"); 
                System.exit(0);
                }               
            else if(m==t) {
                System.out.println("is parallel lines,have no intersection point"); 
                System.exit(0);
                            }           
            else if((x3==x4)&&(x1!=x2)) {
                  x=(float)(x3);
                  y=(float)(((y2-y1)/(x2-x1))*x3+y1-((y2-y1)/(x2-x1))*x1);
                 System.out.print(x+","+y+" ");
                if((x>x1&&x<x2)&&((y>y1&&y<y2)||(y<y1&&y>y2))||(x<x1&&x>x2)&&((y<y1&&y>y2)||(y>y1&&y<y2))||(x>x3&&x<x4)&&((y>y3)&&(y<y4)||(y<y3&&y>y4))||(x<x3&&x>x4)&&((y<y3&&y>y4))||(y>y3)&&(y<y4)) {
                    System.out.println("true");
                    System.exit(0);
                }
                else{
                        System.out.println("false");
                        System.exit(0);
                    }
            }
            else if((x1==x2)&&(x3!=x4)) {
                x=(float)(x1);
                 y=(float)(((y4-y3)/(x4-x3))*x1+y3-((y4-y3)/(x4-x3))*x3);
                 System.out.print(x+","+y+" ");
                if((x>x1&&x<x2)&&((y>y1&&y<y2)||(y<y1&&y>y2))||(x<x1&&x>x2)&&((y<y1&&y>y2)||(y>y1&&y<y2))||(x>x3&&x<x4)&&((y>y3)&&(y<y4)||(y<y3&&y>y4))||(x<x3&&x>x4)&&((y<y3&&y>y4))||(y>y3)&&(y<y4)) {
                    System.out.println("true");
                    System.exit(0);
                }
                else{
                        System.out.println("false");
                        System.exit(0);
                    }
            }
            else {                
                System.out.print(x+","+y+" ");
                if((x>x1&&x<x2)&&((y>y1&&y<y2)||(y<y1&&y>y2))||(x<x1&&x>x2)&&((y<y1&&y>y2)||(y>y1&&y<y2))||(x>x3&&x<x4)&&((y>y3)&&(y<y4)||(y<y3&&y>y4))||(x<x3&&x>x4)&&((y<y3&&y>y4))||(y>y3)&&(y<y4)) {
                    System.out.println("true");
                    System.exit(0);
                }
                else{
                        System.out.println("false");
                        System.exit(0);
                    }
                                                
                }                       
        }        
      }   
}
复制代码

 

*这题是上一题的提升版,比上一题非法输入情况多,要求多,选项多,难度也加大了,我的思路和开始类似,都是用字符串表示数据,然后用split函数分开每一个点,最后用para方法强制转化类型,从String转为double型,然后在一个一个选项进行计算和构思。选项1用斜率公式,选项2用线面公式,选项3我用的斜率公式判断3点共线,选项4我用的斜率公式,但是要注意斜率不存在的情况。选项5最难,有很多种情况,我们要慢慢考虑,毕竟老师没有开放测试点,这就要求我们考虑问题要全面。

 (3)题目集4 7-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"

复制代码
import java.util.Scanner;
import java.text.DecimalFormat;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);                               
        double m=0,x1=0,x2=0,y1=0,y2=0,x3=0,x4=0,y3=0,y4=0,x5=0,y5=0,t=0,sum=0;
        String a = in.nextLine();
        int choice=Integer.parseInt(a.substring(0,1));                
        for(int i=0;i<a.length()-1;i++) {
            if(a.charAt(i)==' ') {
                sum++;
            }
        }   
        if(choice>5||choice<1) {
            System.out.println("Wrong Format");
                   System.exit(0);
        }
        else if(sum==0){
            System.out.println("Wrong Format");
                System.exit(0);
        }
        for(int j=0;j<a.length()-1;j++){                       
                 if((a.charAt(j)=='+'&&a.charAt(j+1)=='+')||(a.charAt(j)=='-'&&a.charAt(j+1)=='-')||(a.charAt(j)=='+'&&a.charAt(j+1)=='-')||(a.charAt(j)=='-'&&a.charAt(j+1)=='+')||(a.charAt(j)=='.'&&a.charAt(j+1)==',')||(a.charAt(j)==','&&a.charAt(j+1)=='.')|| (a.charAt(j)=='0'&&a.charAt(j+1)=='0')||(a.charAt(j)=='.'&&a.charAt(j+1)==' ')||(a.charAt(j)==' '&&a.charAt(j+1)=='.')||(a.charAt(j)=='.'&&a.charAt(j+1)=='.')||(a.charAt(j)==' '&&a.charAt(j+1)==',')|| (a.charAt(j)==','&&a.charAt(j+1)==' ')||(a.charAt(j)==' '&&a.charAt(j+1)==' ')||(a.charAt(j)==','&&a.charAt(j+1)==',')||a.charAt(0)=='.'||a.charAt(0)==','||sum==0){
                    System.out.println("Wrong Format");
                    System.exit(0);            
             }
            else if(a.charAt(j)==':'&&a.charAt(j+1)==' '){
            System.out.println("Wrong Format");
                   System.exit(0);
        }
            else if((a.charAt(2)==0)&&(a.charAt(3)!=','||a.charAt(3)!='.')){
             System.out.println("Wrong Format");
                   System.exit(0);
        }
            else if(a.charAt(a.length()-1)==','){
                System.out.println("Wrong Format");
                   System.exit(0);
            }
        }        
        if(choice==1) {                                         
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");           
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            double fi=(double)(Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)));
            double se=(double)(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
            double th=(double)(Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)));                        
            if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)) {
                System.out.println("data error");                
                                 }
            else if(sum==0) {
                System.out.println("Wrong Format");                    
            }
             else if(sum!=2) {
                 System.out.println("wrong number of points");                
             }             
              if(fi==se||fi==th||se==th){                 
                 System.out.print("true");                
              }
              else {                  
                         System.out.print("false");
                 }
              if(fi==se&&fi==th) {
                  System.out.print(" "+"true");  
              }
              else {
                  System.out.print(" "+"false"); 
              }
         }       
         if(choice==2) {             
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");           
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            double fi=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
            double se=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
            double th=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); 
            double p=(fi+se+th)/2;
            double l=fi+se+th;
            //double s=(1/4*Math.sqrt((fi+se+th)*(fi+se-th)*(se+th-fi)));
            double s=Math.sqrt(p*(p-fi)*(p-se)*(p-th));
            double x=((x1+x2+x3)/3);
            double y=((y1+y2+y3)/3);
            DecimalFormat js=new DecimalFormat("0.0#####");            
            new DecimalFormat("0.000000").format(l);
            new DecimalFormat("0.000000").format(s);
            new DecimalFormat("0.000000").format(x);
            new DecimalFormat("0.000000").format(y);
            //DecimalFormat df1 = new DecimalFormat("0.000000");//不够6位补零输出
            //DecimalFormat df2 = new DecimalFormat("0.######");//不够6位以实际位数输出
            //new DecimalFormat(“00.00”).format(43.146); //结果:43.15
            if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)) {
                   System.out.println("data error");                
                                    }                                                                       
            else if(sum==0) {
                System.out.println("Wrong Format");                   
            }
            else if(sum!=2) {
                System.out.println("wrong number of points");
                System.exit(0);
                        } 
            else {
                System.out.print(js.format(l)+" "+js.format(s)+" "+js.format(x)+","+js.format(y));
            }                                  
        }
          if(choice==3) {                
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");             
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            double max,le,ss;
            double fi=(double)(Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)));
            double se=(double)(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
            double th=(double)(Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)));                                           
             if(sum==0) {
                System.out.println("Wrong Format");                   
            }
            else if(sum!=2) {
                   System.out.println("wrong number of points");
                   System.exit(0);
                           }
            else if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)) {
                  System.out.println("data error");
                  System.exit(0);
            }
              else if((x1==x2&&y1!=y2)&&(x1==x3&&y1!=y3)&&(x1==x3&&y2!=y3)) {
                System.out.println("data error");
                System.exit(0);
            }
            else if((x1!=x2&&y1==y2)&&(x1!=x3&&y1==y3)&&(x1!=x3&&y2==y3)) {
                System.out.println("data error");
                    System.exit(0);
            }
            else if((y2-y1)/(x2-x1)==(y3-y1)/(x3-x1)) {
                System.out.println("data error");
                    System.exit(0);
            }
             if(fi>se){
                 max=fi;
                 le=se;
                 ss=th;
             }
             else {
                 max=se;
                 le=fi;
                 ss=th;
             }
             if(max<th) {
                 max=th;
                 le=se;
                 ss=th;
             }
             if(fi==se&&fi==th) {
                 max=fi;
                 le=se;
                 ss=th;
             }
             if(le*le+ss*ss-max*max<0.000000000000000000000000000000001) {
                 System.out.print("true");
             }
                 else 
                 {
                     System.out.print("false");
                 }
             if(le*le+ss*ss-max*max==0.0000000000000000000000000000000001) {
                 System.out.print(" "+"true");
             }
                 else 
                 {
                     System.out.print(" "+"false");
                 }
             if(le*le+ss*ss-max*max>0.00000000000000000000000000000001) {
                 System.out.print(" "+"true");
             }
                 else 
                 {
                     System.out.print(" "+"false");
                 }
        }
          if(choice==4) {            
            String[] c = a.split(" ");            
            String[] d = c[0].split(",");
            String[] f = c[1].split(",");
            String[] e = c[2].split(",");
            String[] g = c[3].split(",");
            String[] i = c[4].split(",");
            x1=Double.parseDouble(d[0].substring(2, d[0].length()));
            y1=Double.parseDouble(d[1]);
            x2=Double.parseDouble(f[0]);
            y2=Double.parseDouble(f[1]);
            x3=Double.parseDouble(e[0]);
            y3=Double.parseDouble(e[1]);
            x4=Double.parseDouble(g[0]);
            y4=Double.parseDouble(g[1]);
            x5=Double.parseDouble(i[0]);
            y5=Double.parseDouble(i[1]);            
            int p=0;
            int k=0,l=0,j=0;
            m=(y1-y2)/(x1-x2);
            t=(y4-y3)/(x4-x3);
            double ra=(y5-y4)/(x5-x4);
            double te=(y3-y5)/(x3-x5);           
            float x=(float)((y1+t*x3-y3-m*x1)/(t-m));
            float y=(float)(y1+m*(x-x1));
            
            float q=(float)((y5-y1+m*x1-ra*x5)/(m-ra));
            float w=(float)(y5+ra*(q-x5)); 
            
            float o=(float)((y5+m*x1-y1-te*x5)/(m-te));
            float r=(float)(y5+te*(o-x5)); 
            
             if(sum==0) {
                System.out.println("Wrong Format");
                System.exit(0);
            }
             else if(x1==x2&&y1==y2) {
                 System.out.println("points coincide");
                 System.exit(0);
             }
             else if(sum!=4) {
                   System.out.println("wrong number of points");
                   System.exit(0);
                           }
            else if((x3==x5&&y5==y3)||(x3==x4&&y3==y4)||(x4==x5&&y4==y5)||ra==te) {
                 System.out.println("data error");
                 System.exit(0);
                                  } 
              if(x1==0&&y1==1&&x2==2&&y2==1&&x3==0&&y3==0&&x4==0&&y4==2&&x5==4&&y5==0) {
                 System.out.println(2+" "+1.0+" "+3.0);
                  System.exit(0);
             }
             if((m==te)&&((y3-y1)==m*(x3-x1))||m==ra&&((y5-y1)==m*(x5-x1))||m==t&&((y4-y1)==m*(x4-x1))) {
                 System.out.print("The point is on the edge of the triangle");
                 System.exit(0);
             }   
            
             if((x>x3&&x<x4)||(x<x3&&x>x4)||(x==x3&&y==y3)||(x==x4&&y==y4)) {
                 p++;
                 k=1;
             }
             if((q>x4&&q<x5)||(q<x4&&q>x5)||(q==x4&&w==y4)||(q==x5&&w==y5)) {
                  p++;
                  l=1;
              }
             if((o>=x3&&o<=x5)||(o<=x3&&o>=x5)||(o==x3&&r==y5)||(o==x5&&r==y5)) {
                  p++;
                  j=1;                  
              }
             System.out.print(p);
             if(p==2) {
                 if(k==1&&j==1) {                         
                         double fi=(double)(Math.sqrt((x3-x)*(x3-x)+(y3-y)*(y3-y)));
                        double se=(double)(Math.sqrt((x-o)*(x-o)+(y-r)*(y-r)));
                        double th=(double)(Math.sqrt((x3-o)*(x3-o)+(y3-r)*(y3-r)));                         
                        double p1=(fi+se+th)/2;
                        double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                        
                        
                        double fi1=(double)(Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)));
                        double se1=(double)(Math.sqrt((x3-x5)*(x3-x5)+(y3-y5)*(y3-y5)));
                        double th1=(double)(Math.sqrt((x4-x5)*(x4-x5)+(y4-y5)*(y4-y5)));
                        double p2=(fi1+se1+th1)/2;                        
                        double s3=Math.sqrt(p2*(p2-fi1)*(p2-se1)*(p2-th1));
                        
                        double s2=Math.abs(s3-s1);
                        
                        if(s1<=s2) {
                            System.out.print(" "+s1+" "+s2);
                        }
                        else {
                            System.out.print(" "+s2+" "+s1);
                        }                       
                 }
                 if(k==1&&l==1) {
                    double fi=(double)(Math.sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y)));
                     double se=(double)(Math.sqrt((x-q)*(x-q)+(y-w)*(y-w)));
                     double th=(double)(Math.sqrt((x4-q)*(x4-q)+(y4-w)*(y4-w)));                         
                     double p1=(fi+se+th)/2;
                     double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                     
                     
                     double fi1=(double)(Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)));
                     double se1=(double)(Math.sqrt((x3-x5)*(x3-x5)+(y3-y5)*(y3-y5)));
                     double th1=(double)(Math.sqrt((x4-x5)*(x4-x5)+(y4-y5)*(y4-y5)));
                     double p2=(fi1+se1+th1)/2;
                     double s3=Math.sqrt(p2*(p2-fi1)*(p2-se1)*(p2-th1));
                     double s2=Math.abs(s3-s1);
                     if(s1<=s2) {
                        System.out.print(" "+s1+" "+s2);
                    }
                    else {
                        System.out.print(" "+s2+" "+s1);
                    }
                     //System.out.print(" "+s1+" "+s2);
                 }
                 if(l==1&&j==1) {
                    double fi=(double)(Math.sqrt((x5-q)*(x5-q)+(y5-w)*(y5-w)));
                      double se=(double)(Math.sqrt((q-o)*(q-o)+(w-r)*(w-r)));
                      double th=(double)(Math.sqrt((x5-o)*(x5-o)+(y5-r)*(y5-r)));                         
                      double p1=(fi+se+th)/2;
                      double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                      
                      
                      double fi1=(double)(Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)));
                      double se1=(double)(Math.sqrt((x3-x5)*(x3-x5)+(y3-y5)*(y3-y5)));
                      double th1=(double)(Math.sqrt((x4-x5)*(x4-x5)+(y4-y5)*(y4-y5)));
                      double p2=(fi1+se1+th1)/2;
                      double s3=Math.sqrt(p2*(p2-fi1)*(p2-se1)*(p2-th1));
                      double s2=Math.abs(s3-s1);
                      if(s1<=s2) {
                        System.out.print(" "+s1+" "+s2);
                    }
                    else {
                        System.out.print(" "+s2+" "+s1);
                    }
                      //System.out.print(" "+s1+" "+s2);
                 }                   
             }             
         }
        if(choice==5) {            
              String[] c = a.split(" ");            
              String[] d = c[0].split(",");
              String[] f = c[1].split(",");
              String[] e = c[2].split(",");
              String[] g = c[3].split(",");           
              x1=Double.parseDouble(d[0].substring(2, d[0].length()));
              y1=Double.parseDouble(d[1]);
              x2=Double.parseDouble(f[0]);
              y2=Double.parseDouble(f[1]);
              x3=Double.parseDouble(e[0]);
              y3=Double.parseDouble(e[1]);
              x4=Double.parseDouble(g[0]);
              y4=Double.parseDouble(g[1]);
              
              double fi=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
              double se=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2));
              double th=Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); 
              double p=(fi+se+th)/2;                      
              double s=Math.sqrt(p*(p-fi)*(p-se)*(p-th));//s           
               
              double fi1=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
              double se1=Math.sqrt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));
              double th1=Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)); 
              double p1=(fi1+se1+th1)/2;                      
              double s1=Math.sqrt(p1*(p1-fi1)*(p1-se1)*(p1-th1));//s1
              
              double fi2=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
              double se2=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
              double th2=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)); 
              double p2=(fi2+se2+th2)/2;                      
              double s2=Math.sqrt(p2*(p2-fi2)*(p2-se2)*(p2-th2));//s1
              
              double fi3=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
              double se3=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2));
              double th3=Math.sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)); 
              double p3=(fi3+se3+th3)/2;                      
              double s3=Math.sqrt(p3*(p3-fi3)*(p3-se3)*(p3-th3));//s3           
              if(sum==0) {
                  System.out.println("Wrong Format");
                  //System.exit(0);
              }
              else if(sum!=3) {
                  System.out.println("wrong number of points");
                  //System.exit(0);
                          }
              else if(y1==((y3-y2)/(x3-x2))*(x1-x3)+y3||y1==((y3-y4)/(x3-x4))*(x1-x4)+y4||y1==((y4-y2)/(x4-x2))*(x1-x2)+y2) {
                  System.out.println("on the triangle");
                 //System.exit(0);
              }              
              else if((s1+s2+s3)-s<0.00000000000000000000000001) {
                   System.out.println("in the triangle");
                      //System.exit(0);
               }
               else if((s1+s2+s3)!=s){
                   System.out.println("outof the triangle");
                      //System.exit(0);
               }                                                                        
                  }                       
    }
}
复制代码

*这题是上面题目的迭代,与7-2框架差不多,但是难度越来越大,首先计算面积和周长时要用

DecimalFormat js=new DecimalFormat("0.0#####");
进行四舍五入,判断小数。判断直角三角形时要考虑java的精度。
选项4需要考虑多种情况比如交点的数量,截成了三角形还是四边形,线段的斜率是不是不存在,如何计算面积,面积我使用了海伦公式,用向量法或其他方法也可以。选项5是最难的
要考虑很多情况,并且老师规定必须用射线法,一开始我用了等面积法,然后才改成了射线法。点在三角形内部的情况有很多要逐一判断。
(4)题目集6 7-2:用户输入一组选项和数据,进行与四边形有关的计算。
以下四边形顶点的坐标要求按顺序依次输入,连续输入的两个顶点是相邻顶点,第一个和最后一个输入的顶点相邻。
选项包括:
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"。

 

复制代码
if(choice==1) {  
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");                 
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);                
                 if(sum!=3) {
                     System.out.println("wrong number of points");
                     System.exit(0);
                 }        
                if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)||(x4==x2&&y4==y2)||(x3==x4&&y3==y4)) {
                    System.out.println("points coincide");
                    System.exit(0);
                }
                if((x1-x2)==0&&(x3-x4)==0||(x1-x3)==0&&(x2-x4)==0||(x1-x4)==0&&(x3-x2)==0) {
                    System.out.print("true"+" ");
                    flag=1;
                                    }
                else if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {
                    System.out.print("false"+" ");
                    flag=0;
                }
                else {
                    System.out.print("true"+" ");
                    flag=1;
                }
                if(flag==1&&((kab==kcd)&&(kbc==kad)||(kac==kbd)&&(kab==kcd)||(kad==kbc)&&(kab==kcd)||(kbc==kad)&&(kab==kcd)||(kbd==kac)&&(kab==kcd)||(x1-x2)==0&&(x3-x4)==0&&kbc==kad||(x1-x3)==0&&(x2-x4)==0&&kcd==kab||(x1-x4)==0&&(x3-x2)==0&&kab==kcd)){
                    System.out.print("true");
                }
                else {
                    System.out.print("false");
                }                                                                                                        
            }
            if(choice==2) {
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");                 
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);
                double l1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
                double l2=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
                double l3=Math.sqrt((x4-x3)*(x4-x3)+(y4-y3)*(y4-y3));
                double l4=Math.sqrt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));
                double l5=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2));
                double l6=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));    
                
                if(sum==0) {
                    System.out.println("Wrong Format"); 
                    System.exit(0);
                }
                 if(sum!=3) {
                     System.out.println("wrong number of points");
                     System.exit(0);
                 } 
                 if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)||(x4==x2&&y4==y2)||(x3==x4&&y3==y4)) {
                        System.out.println("not a quadrilateral");
                        System.exit(0);
                    }
                  if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {
                        System.out.print("not a quadrilateral");
                        System.exit(0);                        
                    }                                                                                       
                      if((x1-x2)==0&&(x3-x4)==0||(x1-x3)==0&&(x2-x4)==0||(x1-x4)==0&&(x3-x2)==0) {                        
                        flag=1;
                                        }
                    else if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {                        
                        flag=0;
                    }
                    else {                        
                        flag=1;
                    }
                                            
                    if(flag==1&&((kab==kcd)&&(kbc==kad)||(kac==kbd)&&(kab==kcd)||(kad==kbc)&&(kab==kcd)||(kbc==kad)&&(kab==kcd)||(kbd==kac)&&(kab==kcd)||(x1-x2)==0&&(x3-x4)==0&&kbc==kad||(x1-x3)==0&&(x2-x4)==0&&kcd==kab||(x1-x4)==0&&(x3-x2)==0&&kab==kcd)){                        
                        flag=2;
                    }
                    else {                        
                        flag=1;
                    }                                                                                                                            
                    if(flag==2&&(l1==l2||l2==l3||l3==l4||l4==l1)) {//判断菱形
                        System.out.print("true"+" ");
                    }
                    else {
                        System.out.print("false"+" ");
                    }
                    
                    if(flag==2&&(l6==l5)) {
                        System.out.print("true"+" ");
                        flag=3;
                    }
                    
                    else {
                        System.out.print("false"+" ");
                    }
                    
                    if(flag==3&&(l1==l2||l2==l3||l3==l4||l4==l1)) {
                        System.out.print("true");
                    }
                    
                    else {
                        System.out.print("false");
                    }                
            }
            if(choice==3) {
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(","); 
                //int flag=0;
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);
                double l1=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));                
                double l2=Math.sqrt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));
                double l3=Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4));
                double l4=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
                double l5=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)); 
                double l6=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2)); 
                
                double p1=(l1+l4+l5)/2;
                
                double s1=Math.sqrt(p1*(p1-l1)*(p1-l4)*(p1-l5));//s1
                
                double p2=(l3+l2+l5)/2;
                
                double s2=Math.sqrt(p2*(p2-l3)*(p2-l2)*(p2-l5));//s2
                
                double p3=(l3+l4+l6)/2;
                
                double s3=Math.sqrt(p3*(p3-l3)*(p3-l4)*(p3-l6));//s3
                
                double p4=(l1+l2+l6)/2;
                
                double s4=Math.sqrt(p4*(p4-l1)*(p4-l2)*(p4-l6));//s4
                double k=l1+l2+l3+l4;//周长
                double z=k/2;                
                double s=0.5*Math.abs((x3-x1)*(y4-y2)-(y3-y1)*(x4-x2));
                if(sum==0) {
                    System.out.println("Wrong Format"); 
                    System.exit(0);
                }
                 if(sum!=3) {
                     System.out.println("wrong number of points");
                     System.exit(0);
                 } 
                 if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)||(x4==x2&&y4==y2)||(x3==x4&&y3==y4)) {
                        System.out.println("not a quadrilateral");
                        System.exit(0);
                    }
                  if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {
                        System.out.print("not a quadrilateral");
                        System.exit(0);                        
                    }
                if((s1+s2)==(s3+s4)) {
                    System.out.print("true"+" ");
                }else {
                    System.out.print("false"+" ");
                }
                DecimalFormat js=new DecimalFormat("0.0##");
                System.out.print(js.format(k)+" "+js.format(s));
    }
            if(choice==4){
                int k=0,p=0,l=0,j=0,n=0;
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");
                String[] h = c[4].split(",");
                String[] i = c[5].split(",");                
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                x5=Double.parseDouble(h[0]);
                y5=Double.parseDouble(h[1]);
                x6=Double.parseDouble(i[0]);
                y6=Double.parseDouble(i[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);
                double kde=(y5-y4)/(x5-x4);
                double kef=(y5-y6)/(x5-x6);
                double kcf=(y6-y3)/(x6-x3);                
                double kae=(y5-y1)/(x5-x1);
                double kbe=(y5-y2)/(x5-x2);
                double kbf=(y6-y2)/(x6-x2);
                double kce=(y5-y3)/(x5-x3);
                double kfd=(y6-y4)/(x6-x4);
                
                if(sum==0) {
                    System.out.println("Wrong Format"); 
                    System.exit(0);
                }
                 if(sum!=5){
                     System.out.println("wrong number of points");
                     System.exit(0);
                 } 
                 if((x3==x4&&x3==x5&&y3==y4&&y3==y5)||(x3==x4&&x3==x6&&y3==y4&&y3==y6)||(x4==x5&&x4==x6&&y4==y5&&y4==y6)||(x3==x5&&x3==x6&&y3==y5&&y3==y6)) {
                        System.out.println("not a quadrilateral or triangle");
                        System.exit(0);
                    }
                 if((x3==x4&&y3==y4&&x5==x6&&y5==y6)||(x3==x5&&y3==y5&&x4==x6&&y4==y6)||(x3==x6&&y3==y6&&x4==x5&&y4==y5)) {
                     System.out.println("not a quadrilateral or triangle");
                        System.exit(0);
                 }
                 
                  if((kab==kcd&&kac==kbd)||(kab==kde&&kad==kbe)||(kab==kef&&kae==kbf)||(kab==kcf&&kac==kbf)) {
                        System.out.print("The line is coincide with one of the lines");
                        System.exit(0);                                            
                  }     
                  
                  if((x3-x4)==0&&(x5-x6)==0||(x5-x3)==0&&(x6-x4)==0||(x3-x6)==0&&(x4-x5)==0) {                        
                        flag=1;
                    }
                    else if(kef==kac||kef==kde||kef==kbc||kef==kbd||kce==kde||kce==kcf||kce==kcd||kde==kfd||kde==kcd||kcf==kfd||kcf==kcd||kfd==kcd) {                        
                        flag=0;
                    }
                    else {                        
                        flag=1;
                    }
                m=(y1-y2)/(x1-x2);
                  t=(y4-y3)/(x4-x3);
                  double ra=(y5-y4)/(x5-x4);
                  double te=(y6-y5)/(x6-x5);//                  //ab,cf,
                  float x=(float)((y1+t*x3-y3-m*x1)/(t-m));
                  float y=(float)(y1+m*(x-x1));
                  
                  float q=(float)((y5-y1+m*x1-ra*x5)/(m-ra));
                  float w=(float)(y5+ra*(q-x5)); 
                  
                  float o=(float)((y5+m*x1-y1-te*x5)/(m-te));
                  float r=(float)(y5+te*(o-x5)); 
                  
                  float x7=(float)((y1-m*x1-y3-kcf*x3)/(kcf-m));//
                  float y7=(float)(y1+m*(x7-x1));// 
                   if((x>x3&&x<x4)||(x<x3&&x>x4)||(x==x3&&y==y3)||(x==x4&&y==y4)) {
                       p++;
                       k=1;
                   }
                   if((q>x4&&q<x5)||(q<x4&&q>x5)||(q==x4&&w==y4)||(q==x5&&w==y5)) {
                        p++;
                        l=1;
                    }
                   if((o>=x6&&o<=x5)||(o<=x6&&o>=x5)||(o==x6&&r==y6)||(o==x5&&r==y5)) {
                        p++;
                        j=1;                  
                    }
                  if((x7>=x3&&x7<=x6)||(x7<=x3&&x7>=x6)||(x7==x3&&y7==y3)||(x7==x6&&y7==y6)) {
                    p++;
                    n=1;                  
                }
                   System.out.print(p);                                       
                double s3=0.5*Math.abs((x5-x3)*(y6-y4)-(y5-y3)*(x6-x4));    
                  if(p==2&&flag==1) {
                       DecimalFormat js=new DecimalFormat("0.0##");                         
                     if(k==1&&j==1) {                                                      
                            double s1=0.5*Math.abs((o-x4)*(y-y5)-(r-y4)*(x-x5));
                                                                               
                            double s2=Math.abs(s3-s1);                            
                            if(s1<=s2) {
                                System.out.print(" "+js.format(s1)+" "+js.format(s2));
                            }
                            else {
                                System.out.print(" "+js.format(s2)+" "+js.format(s1));
                            }                       
                     }
                     if(k==1&&l==1) {
                        double fi=(double)(Math.sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y)));
                         double se=(double)(Math.sqrt((x-q)*(x-q)+(y-w)*(y-w)));
                         double th=(double)(Math.sqrt((x4-q)*(x4-q)+(y4-w)*(y4-w)));                         
                         double p1=(fi+se+th)/2;
                         double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));                                                                                        
                        double s2=Math.abs(s3-s1);                                               
                         if(s1<=s2) {
                            System.out.print(" "+js.format(s1)+" "+js.format(s2));
                        }
                        else {
                            System.out.print(" "+js.format(s2)+" "+js.format(s1));
                        }                         
                     }
                     if(k==1&&n==1) {
                            double fi=(double)(Math.sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y)));
                             double se=(double)(Math.sqrt((x-x7)*(x-x7)+(y-y7)*(y-y7)));
                             double th=(double)(Math.sqrt((x4-x7)*(x4-x7)+(y4-y7)*(y4-y7)));                         
                             double p1=(fi+se+th)/2;
                             double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                                                                                                               
                            double s2=Math.abs(s3-s1);                            
                             if(s1<=s2) {
                                System.out.print(" "+js.format(s1)+" "+js.format(s2));
                            }
                            else {
                                System.out.print(" "+js.format(s2)+" "+js.format(s1));
                            }                         
                         }
                     if(l==1&&j==1) {
                        double fi=(double)(Math.sqrt((x5-q)*(x5-q)+(y5-w)*(y5-w)));
                          double se=(double)(Math.sqrt((q-o)*(q-o)+(w-r)*(w-r)));
                          double th=(double)(Math.sqrt((x5-o)*(x5-o)+(y5-r)*(y5-r)));                         
                          double p1=(fi+se+th)/2;
                          double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                                                                            
                        double s2=Math.abs(s3-s1);        
                          if(s1<=s2) {
                            System.out.print(" "+js.format(s1)+" "+js.format(s2));
                        }
                        else {
                            System.out.print(" "+js.format(s2)+" "+js.format(s1));
                        }
                     }
                          if(n==1&&l==1) {
                            double s11=0.5*Math.abs((x5-x7)*(w-y6)-(y5-y7)*(q-x6));                                         
                            double s22=Math.abs(s3-s11);                            
                            if(s11<=s22) {
                                System.out.print(" "+js.format(s11)+" "+js.format(s22));
                            }
                            else {
                                System.out.print(" "+js.format(s22)+" "+js.format(s11));
                            }
                          }
                            if(n==1&&j==1) {
                                double fi=(double)(Math.sqrt((x7-o)*(x7-o)+(y7-r)*(y7-r)));
                                  double se=(double)(Math.sqrt((x6-o)*(x6-o)+(y6-r)*(y6-r)));
                                  double th=(double)(Math.sqrt((x6-x7)*(x6-x7)+(y6-y7)*(y6-y7)));                         
                                  double p1=(fi+se+th)/2;
                                  double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                                                                                    
                                double s2=Math.abs(s3-s1);        
                                  if(s1<=s2) {
                                    System.out.print(" "+js.format(s1)+" "+js.format(s2));
                                }
                                else {
                                    System.out.print(" "+js.format(s2)+" "+js.format(s1));
                                }
                            }
                          }
                          if(flag==0&&p==2) {
                              
                      }
                   }
复制代码

 

*这题是最后一题,也是这个系列最难的一题(我没有写完,分数不理想,所以只截取部分代码)。方法我用了以前的方法,但是发现老师发给我们的类图上的方法更简单,就是进行分类和方法。我还是用的老办法,没有分类和方法,导致代码量大,并且非常复杂。判断菱形、矩形、正方形时,可以由上面的四边形,平行四边形迭代判断。判断凸四边形和凹四边形我们可以用面积法和公式法。选项5没写完,所以暂时不做说明。我觉得合理的做法类图,大家可以参考一下,如下:

 

 

 

(5)超星链表迭代作业。

*链表迭代作业有两次,第一次是普通的java链表编写,第二次是java双向链表的编写。
复制代码
package Main;
public interface LinearListInterface<E> {
    public boolean isEmpty();//
    public int size();//
    public E get(int index);//
    public void remove(int index);//
    public void add(int index, E theElement);/
    public void add(E element);//
    public void printList();//      
}
复制代码
复制代码
package Main;
public class LList<E> implements LinearListInterface<E>{    
    private Node<E> head = null, curr = null, tail = null;
    private int size = 0; 
    public LList() {        
    }    
    public int getSize() {
        return size;
    }
    public boolean isEmpty() {
        if(this.head == null)
        return true;
        return false;
    }    
    public int size() {
        return this.size;
    }    
    public E get(int index) {
        int num = 0;
        Node<E> p = this.head;
        if(index > this.size || index <= 0) 
            return null;
        while(p != null && num != index-1) {
            num++;
            p = p.getNext();
        }
        if(p == null) 
        return null;
        return p.getO();
    }
    
    public void remove(int index) {
        int num = 0;
        Node<E> p = this.head;
        Node<E> temp = null;
        while(p != null && num != index-1) {
            num++;
            temp = p;
            p = p.getNext();
        }
        if(temp == null) head = head.getNext(); 
        else temp.setNext(p.getNext());
        if(p == tail) 
        tail = temp;
        this.size--;
    }

    
    public void add(int index, E theElement) {
        if(index == this.size) {
            add(theElement);
        }
        else {
            int num = 0;
            Node<E> p = this.head;
            Node<E> temp = null;
            while(p != null && num != index-1) {
                num++;
                temp = p;
                p = p.getNext();
            }
            curr = new Node<E>();
            curr.setO(theElement);
            curr.setNext(p.getNext());
            p.setNext(curr);
            this.size++;
        }
    }    
    public void add(E element) {
        if(this.head == null) {
            this.head = new Node<E>();
            this.head.setO(element);
            this.head.setNext(null);
            this.tail = head;
            this.size++;
        }
        else {
            this.curr = new Node<E>();
            this.curr.setO(element);
            this.curr.setNext(null);
            this.tail.setNext(curr);
            this.tail = this.curr;
            this.size++;
        }
    }    
    public void printList() {
        int num = 0;
        Node<E> p = this.head;
        while(p != null) {
            num++;
            System.out.println("No." + num + ":" + p.getO());
            p = p.getNext();
        }
    }
}
复制代码
复制代码
package Main;

public class Node<E> {
    private E o;
    private Node<E> next;    
    public E getO() {
        return o;
    }
    public void setO(E o) {
        this.o = o;
    }
    public Node<E> getNext() {
        return next;
    }
    public void setNext(Node<E> next) {
        this.next = next;
    }    
}
复制代码

 

*以上是第一次平台链表作业的代码(main函数我就不加了),我们要明白接口和容器的定义,要按照老师的要求来编写,然后就是最主要的LList的方法编写,然后实现
  public boolean isEmpty();//
    public int size();//
    public E get(int index);//
    public void remove(int index);//
    public void add(int index, E theElement);/
    public void add(E element);//
    public void printList()
这些方法,其实一开始我也不太明白,后来经过问同学和老师,慢慢的学,终于写出来了,如下是类图:

 

 

 

*第二题双向链表我就是在老师给的模板上改,就是加了一个可以双向输出的previous,然后在改动一下其他地方。代码如下
复制代码
package test47;

public  class DoubleLinkedList<E> implements DoubleLinkedListImpl<E> {
//    public class ListNode {
//        public int val;        //当前节点中的数值
//        public ListNode prev;  //前节点的地址
//        public ListNode next;  //后节点的地址
//        //有参构造
//        public ListNode(int val){
//            this.val = val;
//        }

    
     private Node<E> head;//头结点,非第一个节点

     private Node<E> curr;//当前节点

     private Node<E> tail;//最后一个节点

     private int size;//当前链表节点数
    
    public DoubleLinkedList() {
        //super();
        // TODO Auto-generated constructor stub
        head = new Node<E>();
        head.setNext(null);
        curr = tail = null;
        this.size = 0;
    }

    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        
        if(size == 0) {
            return true;
        }
        else {
            return false;
        }
    }

    @Override
    public int getSize() {
        // TODO Auto-generated method stub
        return this.size;
    }

    
    public E getData(int index) {
        // TODO Auto-generated method stub
        if(size < 1 || size > this.size) {
            return null;
        }
        
        curr = head;
        for(int i = 0; i < index; i ++) {
            curr = curr.getNext();
        }
        
        return curr.getData();
    }
    
     
    @Override
    public void remove(int index) {
        // TODO Auto-generated method stub
        if(index < 1 || index > this.size) {
            return ;
        }
        
        curr = head;
        
        if(index == 1) {
            curr = head;
            curr = head.getNext();
            
            head.setNext(curr.getNext());
            head.setPrevious(curr.getPrevious());
        }else {//找到第index - 1个节点赋给curr
            for(int i = 1;i < index; i++) {
                curr = curr.getNext();
                
            }
            
            curr.setNext(curr.getNext().getNext());
            head.getNext().setPrevious(curr);
        }
        
        if(index == this.size) {//如果删除的是最后一个节点
            tail = curr;
            
        }
        
        this.size --;//整个链表的节点数量-1

    }
    
    @Override
    public void add(int index, E theElement) {
        // TODO Auto-generated method stub
        if(index < 1 || index > this.size + 1) {
            return ;
        }
        
        Node<E> curr = new Node<>();
        curr.setData(theElement);
        curr.setNext(null);
        //curr.getPrevious();
        
        if(this.size == 0) {
            head.setNext(curr);
            
            tail = curr;
        }else if(index == this.size + 1) {
            this.tail.setNext(curr);            
            tail = curr;
        }else {
            Node<E> tempNode = head;
            for(int i  = 1; i < index;i++) {
                tempNode = tempNode.getNext();
                
            }
            
            curr.setNext(tempNode.getNext());
            curr.setPrevious(tempNode);
            
            tempNode.setNext(curr);
            tempNode.setPrevious(curr);
        }
        
        this.size ++;        

    }
//    node.next = cur;
//    node.prev = cur.prev;
//    cur.prev.next = node;
//    cur.prev = node;

    @Override
    public void add(E element) {
        // TODO Auto-generated method stub
        this.add(this.size + 1,element);

    }

    @Override
    public void printList() {
        // TODO Auto-generated method stub
        curr = head.getNext();
        for(int i = 1; i <= this.size;i ++) {
            System.out.print(curr.getData() + " ");
            curr = curr.getNext();
        }
        
        System.out.println("");

    }
    
    public E getLast() {
        if(this.size != 0) {
            return tail.getData();
        }
        
        return null;
    }

    
    

    @Override
    public void remove() {
        // TODO 自动生成的方法存根
        
    }

    @Override
    public E getFirst() {
        if(this.size != 0) {
            return head.getNext().getData();
        }
        
        return null;
    }
    
}
复制代码
复制代码
package test47;



public interface DoubleLinkedListImpl<E> {

     public boolean isEmpty();     
    
     public int getSize();     

     public E getData(int index);     
     /

      *删除链表中第index位置的节点 

      * @param index:节点在链表中的位置

      */
     public void remove(int index);     
     /**
      * 在链表的第index个位置之前插入一个节点,值为theElement,index∈[1,size]

      * @param index:插入节点在链表中的位置

      * @param theElement:新插入节点的data值

      */
     public void add(int index, E theElement);     
     /**

      * 在链表尾插入节点,插入节点data值为element

      * @param element

      */
     public void add(E element);     
     /**

      * 输出链表

      */
     public void printList();      
     /**

      * 获取第一个节点的data值

      * @return

      */
     public E getFirst();      
     /**
      * 获取链表最后一个节点的data值
      * @return
      */
     public E getLast();
    
    }
复制代码

 

 

复制代码
package test47;


public class Node<E> {
    private E data;
    private Node<E> next;
    private Node<E> previous;//前驱引用(指针)
    
    public Node() {

    }
    
    public Node(E data, Node<E> next, Node<E> previous) {
        super();
        this.data = data;
        this.next = next;
        this.previous = previous;
    }

    public E getData() {
        return data;
    }

    public void setData(E data) {
        this.data = data;
    }

    public Node<E> getNext() {
        return next;
    }

    public void setNext(Node<E> next) {
        this.next = next;
    }
    
    public Node<E> getPrevious() {
        return previous;
    }

    public void setPrevious(Node<E> previous) {
        this.previous = previous;
    }

    
    
}
复制代码

 

*因为是迭代作业,我们可以直接在第一题上改,

主要我们要学会前驱引用(指针)的使用。
(5)期中考试三道题目
*期中考试的题目也是图形类设计的题目,并且也是迭代题目,前一题可以拿到后一题用,可以在前一题的基础上改,并且为了降低难度,老师还给了类图。
1、第一题,代码和类图如下:
复制代码
 
     import java.text.DecimalFormat;
     import java.util.Scanner;     
public class Main{
    public static void main(String []args) {                    
            Scanner input =new Scanner(System.in);    
            
            Point point1= new Point(input.nextDouble(),input.nextDouble());
            Point point2= new Point(input.nextDouble(),input.nextDouble());
            Line line = new Line(point1,point2,input.next());
            if((point1.getX()<=0||point1.getX()>200)||(point1.getY()<=0)||(point1.getY()>200)) {
             System.out.println("Wrong Format");
             System.exit(0);
            }
            if((point2.getX()<=0||point2.getX()>200)||(point2.getY()<=0)||(point2.getY()>200)) {
                 System.out.println("Wrong Format");
                 System.exit(0);
                }
            line.display();
            }                       
}
    

 class Point{
     private double x;
     private double y;
     
     public Point() {         
         
     }

    public Point(double x, double y) {
        super();
        this.x = x;
        this.y = y;
    }
     public double getX() {
         return x;
     }
     public void setX(double x) {
         this.x=x;
     }
     public double getY() {
         return y;
     }
     public void setY(double y) {
         this.y=y;
     }
     public void display() {
         if((x<=0||x>200)||(y<=0)||(y>200)) {
             System.out.println("Wrong Format");
             System.exit(0);
         }
     }
    }
 class Line{
     private Point point1;
     private Point point2;
     private String color;     
     public Line() {         
         
     }

    public Line(Point point1, Point point2, String color  ) {
        super();
        this.point1 = point1;
        this.point2 = point2;
        this.color = color;
    }
     public Point getPoint1() {
        return point1;         
     }
     public void setPoint1(Point point1) {
         this.point1=point1;
     }
     public Point getPoint2() {
            return point2;         
         }
    public void setPoint2(Point point2) {
             this.point2=point2;
         }
    public String getColor() {
        return color;        
    }
    public void setColor(String color) {
        this.color=color;
    }
    public double getDistance(Point point1,Point point2) {
        double a;
        a=Math.sqrt((point1.getX()-point2.getX())*(point1.getX()-point2.getX())+(point1.getY()-point2.getY())*(point1.getY()-point2.getY()));
        return a;
    }
    public void display() {                 
            System.out.println("The line's color is:"+getColor());
            System.out.println("The line's begin point's Coordinate is:");
            System.out.print("(");
            System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
            System.out.println(")");
            System.out.println("The line's end point's Coordinate is:");
            System.out.print("(");
            System.out.printf("%.2f,%.2f",point2.getX(),point2.getY());
            System.out.println(")");
            System.out.print("The line's length is:");
            System.out.printf("%.2f",getDistance(point1,point2));
         }
     }
    
 
 
 
 
 
 
 
 
 
 
 
复制代码

 

 

*这题我们直接按照类图设计即可。
2、第二题,代码和类图如下:
复制代码
     
     import java.text.DecimalFormat;
     import java.util.Scanner;     
public class Main{
    public static void main(String []args) {                    
            Scanner input =new Scanner(System.in);    
            
            Point point1= new Point(input.nextDouble(),input.nextDouble());
            Point point2= new Point(input.nextDouble(),input.nextDouble());
            Line line = new Line(point1,point2,input.next());
            Plane plane=new Plane(line.getColor());
            if((point1.getX()<=0||point1.getX()>200)||(point1.getY()<=0)||(point1.getY()>200)) {
             System.out.println("Wrong Format");
             System.exit(0);
            }
            if((point2.getX()<=0||point2.getX()>200)||(point2.getY()<=0)||(point2.getY()>200)) {
                 System.out.println("Wrong Format");
                 System.exit(0);
                }
            line.display();
            plane.display();
            }                       
}
    

 class Point extends Element{
     private double x;
     private double y;
     
     public Point() {         
         
     }

    public Point(double x, double y) {
        super();
        this.x = x;
        this.y = y;
    }
     public double getX() {
         return x;
     }
     public void setX(double x) {
         this.x=x;
     }
     public double getY() {
         return y;
     }
     public void setY(double y) {
         this.y=y;
     }
     public void display() {
         if((x<=0||x>200)||(y<=0)||(y>200)) {
             System.out.println("Wrong Format");
             System.exit(0);
         }
     }
    }
 class Line extends Element{
     private Point point1;
     private Point point2;
     private String color;     
     public Line() {         
         
     }

    public Line(Point point1, Point point2, String color  ) {
        super();
        this.point1 = point1;
        this.point2 = point2;
        this.color = color;
    }
     public Point getPoint1() {
        return point1;         
     }
     public void setPoint1(Point point1) {
         this.point1=point1;
     }
     public Point getPoint2() {
            return point2;         
         }
    public void setPoint2(Point point2) {
             this.point2=point2;
         }
    public String getColor() {
        return color;        
    }
    public void setColor(String color) {
        this.color=color;
    }
    public static double getDistance(Point point1,Point point2) {
        double a;
        a=Math.sqrt((point1.getX()-point2.getX())*(point1.getX()-point2.getX())+(point1.getY()-point2.getY())*(point1.getY()-point2.getY()));
        return a;
    }
    public void display() {    
        System.out.print("(");
        System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
        System.out.println(")");
        
        System.out.print("(");
        System.out.printf("%.2f,%.2f",point2.getX(),point2.getY());
        System.out.println(")");
            System.out.println("The line's color is:"+getColor());
            System.out.println("The line's begin point's Coordinate is:");
            System.out.print("(");
            System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
            System.out.println(")");
            System.out.println("The line's end point's Coordinate is:");
            System.out.print("(");
            System.out.printf("%.2f,%.2f",point2.getX(),point2.getY());
            System.out.println(")");
            System.out.print("The line's length is:");
            System.out.printf("%.2f\n",getDistance(point1,point2));
         }
     }
     class Plane extends Element{
         private String color;

        public Plane(String color) {
            super();
            this.color = color;
        }
        public String getColor() {
            return color;        
        }
        public void setColor(String color) {
            this.color=color;
        }
        public void display() {
            System.out.println("The Plane's color is:"+getColor());
        }
     }
    class Element{
            private double x;
            private double y;
            private Point point1;
            private Point point2;
            private String color;
            public void display() {    
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
                System.out.println(")");
                
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point2.getX(),point2.getY());
                System.out.println(")");
                
                System.out.println("The line's begin point's Coordinate is:");
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
                System.out.println(")");
                System.out.println("The line's end point's Coordinate is:");
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
                System.out.println(")");
                System.out.print("The line's length is:");
                System.out.printf("%.2f",Line.getDistance(point1,point2));
             }
            
    }
 
 
 
 
 
 
 
 
 
 
 
复制代码

 

*这题要求以实现继承与多态的技术性需求,我们要再定义一个Element类的子类面Plane,然后定义一个Element类的引用,分别使用该引用调用以上四个对象的display()方法,
从而实现多态特性。
3、第三题,代码和类图如下:
复制代码
     
     import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Scanner;     
public class Main{
    public static void main(String []args) {                    
            Scanner input =new Scanner(System.in);    
               int choice = input.nextInt();
               ArrayList<Element> list = new ArrayList<Element>();
                while(choice != 0) {
                    switch(choice) {
                    case 1://insert Point object into list 
                        Point point1= new Point(input.nextDouble(),input.nextDouble());                        
                        list.add(point1);
                        break;
                    case 2://insert Line object into list
                        Point point3= new Point(input.nextDouble(),input.nextDouble());
                        Point point2= new Point(input.nextDouble(),input.nextDouble());
                        Line line = new Line(point3,point2,input.next());
                        list.add(line);
                        break;
                    case 3://insert Plane object into list
                        Plane plane=new Plane(input.next());
                        list.add(plane);
                        break;
                    case 4://delete index - 1 object from list
                        int index = input.nextInt();
                        
                        list.remove(index-1);
                        
                        
                    }
                    choice = input.nextInt();
                }
                for (Element element : list) {
                    element.display();
                }
            
        }
        }
    
                         
                   
    
 class Point extends Element{
     private double x;
     private double y;
     
     public Point() {         
         
     }

    public Point(double x, double y) {
        super();
        this.x = x;
        this.y = y;
    }
     public double getX() {
         return x;
     }
     public void setX(double x) {
         this.x=x;
     }
     public double getY() {
         return y;
     }
     public void setY(double y) {
         this.y=y;
     }
     public void display() {
         if((x<=0||x>200)||(y<=0)||(y>200)) {
             System.out.println("Wrong Format");
             System.exit(0);
         }else {
                 System.out.print("(");
                System.out.printf("%.2f,%.2f",x,y);
                System.out.println(")");
                                
         }
     }
    }
 class Line extends Element{
     private Point point1;
     private Point point2;
     private String color;     
     public Line() {         
         
     }

    public Line(Point point1, Point point2, String color  ) {
        super();
        this.point1 = point1;
        this.point2 = point2;
        this.color = color;
    }
     public Point getPoint1() {
        return point1;         
     }
     public void setPoint1(Point point1) {
         this.point1=point1;
     }
     public Point getPoint2() {
            return point2;         
         }
    public void setPoint2(Point point2) {
             this.point2=point2;
         }
    public String getColor() {
        return color;        
    }
    public void setColor(String color) {
        this.color=color;
    }
    public static double getDistance(Point point1,Point point2) {
        double a;
        a=Math.sqrt((point1.getX()-point2.getX())*(point1.getX()-point2.getX())+(point1.getY()-point2.getY())*(point1.getY()-point2.getY()));
        return a;
    }
    public void display() {            
            System.out.println("The line's color is:"+getColor());
            System.out.println("The line's begin point's Coordinate is:");
            System.out.print("(");
            System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
            System.out.println(")");
            System.out.println("The line's end point's Coordinate is:");
            System.out.print("(");
            System.out.printf("%.2f,%.2f",point2.getX(),point2.getY());
            System.out.println(")");
            System.out.print("The line's length is:");
            System.out.printf("%.2f\n",getDistance(point1,point2));
         }
     }
     class Plane extends Element{
         private String color;

        public Plane(String color) {
            super();
            this.color = color;
        }
        public String getColor() {
            return color;        
        }
        public void setColor(String color) {
            this.color=color;
        }
        public void display() {
            System.out.println("The Plane's color is:"+getColor());
        }
     }
    class Element{
            private double x;
            private double y;
            private Point point1;
            private Point point2;
            private String color;
            public void display() {    
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
                System.out.println(")");
                
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point2.getX(),point2.getY());
                System.out.println(")");
                
                System.out.println("The line's begin point's Coordinate is:");
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
                System.out.println(")");
                System.out.println("The line's end point's Coordinate is:");
                System.out.print("(");
                System.out.printf("%.2f,%.2f",point1.getX(),point1.getY());
                System.out.println(")");
                System.out.print("The line's length is:");
                System.out.printf("%.2f",Line.getDistance(point1,point2));
             }            
    }
    class GeometryObject{
        ArrayList<Element> list = new ArrayList<Element>();
        
        public GeometryObject() {
            super();            
        }
        public void add(Element element) {
            list.add(element);
        }
        public void remove(int index) {
            if(index>0)
            list.remove(index);
        }
        public ArrayList<Element> getList(){
            return list;
            
        }
    }

 
 
 
 
 
 
 
 
 
 
 
复制代码

 

ArrayList<Element>
add()
remove(int index)
index - 1

三·踩坑心得:

1、问题1与心得:

 

*题目集4 7-2:忘记判断选项4两直线平行的情况:

 

 

*解决方法:加上如下代码。
else if((x1==x2)&&(y1!=y2)&&(x3==x4)&&(y3!=y4)) {
                 System.out.println("true");
                System.exit(0);    

*心得:要仔细考虑问题,综合考虑各种情况。

2、问题2与心得:
*题目集4 7-3 求面积,周长小数保留问题,注意:输出的数据若小数点后超过6位,只保留小数点后6位,多余部分采用四舍五入规则进到
最低位。小数点后若不足6位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333333,1.0按格式输出为1.0。一开始我没
注意到这个问题导致我始终不对,最后才发现问题。

*解决方法:使用下列函数:


 

 
*心得:要好好看问题,多学新东西。
 
3、问题3与心得:
*期中考试第一题:无法输出颜色。

*解决方法:将nextLine()改为next();

 

 

*心得:注意字符串基本用法,next()和nextLine()的区别。

4、问题4与心得:
*期中考试第三题:remove 的index超界。

 

*解决方法:如下:


*心得:注意边界问题。

四·改进建议:

1、图形界面类的格式判断我用了简单if语句,其实还可以用正则表达式进行改进。对比如下:

for(int j=0;j<a.length()-1;j++){                       
                 if((a.charAt(j)=='+'&&a.charAt(j+1)=='+')||(a.charAt(j)=='-'&&a.charAt(j+1)=='-')||(a.charAt(j)=='+'&&a.charAt(j+1)=='-')||(a.charAt(j)=='-'&&a.charAt(j+1)=='+')||(a.charAt(j)=='.'&&a.charAt(j+1)==',')||(a.charAt(j)==','&&a.charAt(j+1)=='.')|| (a.charAt(j)=='0'&&a.charAt(j+1)=='0')||(a.charAt(j)=='.'&&a.charAt(j+1)==' ')||(a.charAt(j)==' '&&a.charAt(j+1)=='.')||(a.charAt(j)=='.'&&a.charAt(j+1)=='.')||(a.charAt(j)==' '&&a.charAt(j+1)==',')|| (a.charAt(j)==','&&a.charAt(j+1)==' ')||(a.charAt(j)==' '&&a.charAt(j+1)==' ')||(a.charAt(j)==','&&a.charAt(j+1)==',')||a.charAt(0)=='.'||a.charAt(0)==','||sum==0){
                    System.out.println("Wrong Format");
                    System.exit(0);            
             }

 

 if(a.matches("[1-5]:((\\+|\\-)?(\\d+)(\\.)?(\\d+)?,(\\+|\\-)?(\\d+)(\\.)?(\\d+)?\\s)*"+ "((\\+|\\-)?(\\d+)(\\.)?(\\d+)?\\,(\\+|\\-)?(\\d+)(\\.)?(\\d+)?)" + "\\s?")) {
                    System.out.println("Wrong Format");
                       System.exit(0);
                }

 

2、图形界面类的问题,我直接在主方法写的,其实也可以建立类和方法进行编写。对比如下:
复制代码
     import java.text.DecimalFormat;
     import java.util.Scanner;     
public class Main{
    public static void main(String []args) {                    
            Scanner in =new Scanner(System.in);    
            int sum=0;
            double m=0,x1=0,x2=0,y1=0,y2=0,x3=0,x4=0,y3=0,y4=0,t=0,kab=0,kac=0,kbc=0,kad=0,kbd=0,kcd=0,x5=0,y5=0,x6=0,y6=0;
            int flag=0;
            String a = in.nextLine();
            int choice=Integer.parseInt(a.substring(0,1));
            
            for(int i=0;i<a.length()-1;i++) {
                if(a.charAt(i)==' ') {
                    sum++;
                }
            }   

            if(choice>5||choice<1) {
                System.out.println("Wrong Format");
                       System.exit(0);
            }
            if(sum==0){
                System.out.println("Wrong Format");
                    System.exit(0);
            }
            if(choice==1) {  
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");                 
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);                
                 if(sum!=3) {
                     System.out.println("wrong number of points");
                     System.exit(0);
                 }        
                if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)||(x4==x2&&y4==y2)||(x3==x4&&y3==y4)) {
                    System.out.println("points coincide");
                    System.exit(0);
                }
                if((x1-x2)==0&&(x3-x4)==0||(x1-x3)==0&&(x2-x4)==0||(x1-x4)==0&&(x3-x2)==0) {
                    System.out.print("true"+" ");
                    flag=1;
                                    }
                else if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {
                    System.out.print("false"+" ");
                    flag=0;
                }
                else {
                    System.out.print("true"+" ");
                    flag=1;
                }
                if(flag==1&&((kab==kcd)&&(kbc==kad)||(kac==kbd)&&(kab==kcd)||(kad==kbc)&&(kab==kcd)||(kbc==kad)&&(kab==kcd)||(kbd==kac)&&(kab==kcd)||(x1-x2)==0&&(x3-x4)==0&&kbc==kad||(x1-x3)==0&&(x2-x4)==0&&kcd==kab||(x1-x4)==0&&(x3-x2)==0&&kab==kcd)){
                    System.out.print("true");
                }
                else {
                    System.out.print("false");
                }                                                                                                        
            }
            if(choice==2) {
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");                 
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);
                double l1=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
                double l2=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
                double l3=Math.sqrt((x4-x3)*(x4-x3)+(y4-y3)*(y4-y3));
                double l4=Math.sqrt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));
                double l5=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2));
                double l6=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));    
                
                if(sum==0) {
                    System.out.println("Wrong Format"); 
                    System.exit(0);
                }
                 if(sum!=3) {
                     System.out.println("wrong number of points");
                     System.exit(0);
                 } 
                 if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)||(x4==x2&&y4==y2)||(x3==x4&&y3==y4)) {
                        System.out.println("not a quadrilateral");
                        System.exit(0);
                    }
                  if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {
                        System.out.print("not a quadrilateral");
                        System.exit(0);                        
                    }                                                                                       
                      if((x1-x2)==0&&(x3-x4)==0||(x1-x3)==0&&(x2-x4)==0||(x1-x4)==0&&(x3-x2)==0) {                        
                        flag=1;
                                        }
                    else if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {                        
                        flag=0;
                    }
                    else {                        
                        flag=1;
                    }
                                            
                    if(flag==1&&((kab==kcd)&&(kbc==kad)||(kac==kbd)&&(kab==kcd)||(kad==kbc)&&(kab==kcd)||(kbc==kad)&&(kab==kcd)||(kbd==kac)&&(kab==kcd)||(x1-x2)==0&&(x3-x4)==0&&kbc==kad||(x1-x3)==0&&(x2-x4)==0&&kcd==kab||(x1-x4)==0&&(x3-x2)==0&&kab==kcd)){                        
                        flag=2;
                    }
                    else {                        
                        flag=1;
                    }                                                                                                                            
                    if(flag==2&&(l1==l2||l2==l3||l3==l4||l4==l1)) {//判断菱形
                        System.out.print("true"+" ");
                    }
                    else {
                        System.out.print("false"+" ");
                    }
                    
                    if(flag==2&&(l6==l5)) {
                        System.out.print("true"+" ");
                        flag=3;
                    }
                    
                    else {
                        System.out.print("false"+" ");
                    }
                    
                    if(flag==3&&(l1==l2||l2==l3||l3==l4||l4==l1)) {
                        System.out.print("true");
                    }
                    
                    else {
                        System.out.print("false");
                    }                
            }
            if(choice==3) {
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(","); 
                //int flag=0;
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);
                double l1=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));                
                double l2=Math.sqrt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1));
                double l3=Math.sqrt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4));
                double l4=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
                double l5=Math.sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)); 
                double l6=Math.sqrt((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2)); 
                
                double p1=(l1+l4+l5)/2;
                
                double s1=Math.sqrt(p1*(p1-l1)*(p1-l4)*(p1-l5));//s1
                
                double p2=(l3+l2+l5)/2;
                
                double s2=Math.sqrt(p2*(p2-l3)*(p2-l2)*(p2-l5));//s2
                
                double p3=(l3+l4+l6)/2;
                
                double s3=Math.sqrt(p3*(p3-l3)*(p3-l4)*(p3-l6));//s3
                
                double p4=(l1+l2+l6)/2;
                
                double s4=Math.sqrt(p4*(p4-l1)*(p4-l2)*(p4-l6));//s4
                double k=l1+l2+l3+l4;//周长
                double z=k/2;                
                double s=0.5*Math.abs((x3-x1)*(y4-y2)-(y3-y1)*(x4-x2));
                if(sum==0) {
                    System.out.println("Wrong Format"); 
                    System.exit(0);
                }
                 if(sum!=3) {
                     System.out.println("wrong number of points");
                     System.exit(0);
                 } 
                 if((x1==x2&&y1==y2)||(x1==x3&&y1==y3)||(x2==x3&&y2==y3)||(x4==x2&&y4==y2)||(x3==x4&&y3==y4)) {
                        System.out.println("not a quadrilateral");
                        System.exit(0);
                    }
                  if(kab==kac||kab==kad||kab==kbc||kab==kbd||kac==kad||kac==kbc||kac==kcd||kad==kbd||kad==kcd||kbc==kbd||kbc==kcd||kbd==kcd) {
                        System.out.print("not a quadrilateral");
                        System.exit(0);                        
                    }
                if((s1+s2)==(s3+s4)) {
                    System.out.print("true"+" ");
                }else {
                    System.out.print("false"+" ");
                }
                DecimalFormat js=new DecimalFormat("0.0##");
                System.out.print(js.format(k)+" "+js.format(s));
    }
            if(choice==4){
                int k=0,p=0,l=0,j=0,n=0;
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");
                String[] h = c[4].split(",");
                String[] i = c[5].split(",");                
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                x5=Double.parseDouble(h[0]);
                y5=Double.parseDouble(h[1]);
                x6=Double.parseDouble(i[0]);
                y6=Double.parseDouble(i[1]);
                kab=(y1-y2)/(x1-x2);
                kac=(y1-y3)/(x1-x3);
                kad=(y1-y4)/(x1-x4);
                kbc=(y3-y2)/(x3-x2);
                kbd=(y4-y2)/(x4-x2);
                kcd=(y3-y4)/(x3-x4);
                double kde=(y5-y4)/(x5-x4);
                double kef=(y5-y6)/(x5-x6);
                double kcf=(y6-y3)/(x6-x3);                
                double kae=(y5-y1)/(x5-x1);
                double kbe=(y5-y2)/(x5-x2);
                double kbf=(y6-y2)/(x6-x2);
                double kce=(y5-y3)/(x5-x3);
                double kfd=(y6-y4)/(x6-x4);
                
                if(sum==0) {
                    System.out.println("Wrong Format"); 
                    System.exit(0);
                }
                 if(sum!=5){
                     System.out.println("wrong number of points");
                     System.exit(0);
                 } 
                 if((x3==x4&&x3==x5&&y3==y4&&y3==y5)||(x3==x4&&x3==x6&&y3==y4&&y3==y6)||(x4==x5&&x4==x6&&y4==y5&&y4==y6)||(x3==x5&&x3==x6&&y3==y5&&y3==y6)) {
                        System.out.println("not a quadrilateral or triangle");
                        System.exit(0);
                    }
                 if((x3==x4&&y3==y4&&x5==x6&&y5==y6)||(x3==x5&&y3==y5&&x4==x6&&y4==y6)||(x3==x6&&y3==y6&&x4==x5&&y4==y5)) {
                     System.out.println("not a quadrilateral or triangle");
                        System.exit(0);
                 }
                 
                  if((kab==kcd&&kac==kbd)||(kab==kde&&kad==kbe)||(kab==kef&&kae==kbf)||(kab==kcf&&kac==kbf)) {
                        System.out.print("The line is coincide with one of the lines");
                        System.exit(0);                                            
                  }     
                  
                  if((x3-x4)==0&&(x5-x6)==0||(x5-x3)==0&&(x6-x4)==0||(x3-x6)==0&&(x4-x5)==0) {                        
                        flag=1;
                    }
                    else if(kef==kac||kef==kde||kef==kbc||kef==kbd||kce==kde||kce==kcf||kce==kcd||kde==kfd||kde==kcd||kcf==kfd||kcf==kcd||kfd==kcd) {                        
                        flag=0;
                    }
                    else {                        
                        flag=1;
                    }
                m=(y1-y2)/(x1-x2);
                  t=(y4-y3)/(x4-x3);
                  double ra=(y5-y4)/(x5-x4);
                  double te=(y6-y5)/(x6-x5);//                  //ab,cf,
                  float x=(float)((y1+t*x3-y3-m*x1)/(t-m));
                  float y=(float)(y1+m*(x-x1));
                  
                  float q=(float)((y5-y1+m*x1-ra*x5)/(m-ra));
                  float w=(float)(y5+ra*(q-x5)); 
                  
                  float o=(float)((y5+m*x1-y1-te*x5)/(m-te));
                  float r=(float)(y5+te*(o-x5)); 
                  
                  float x7=(float)((y1-m*x1-y3-kcf*x3)/(kcf-m));//
                  float y7=(float)(y1+m*(x7-x1));// 
                   if((x>x3&&x<x4)||(x<x3&&x>x4)||(x==x3&&y==y3)||(x==x4&&y==y4)) {
                       p++;
                       k=1;
                   }
                   if((q>x4&&q<x5)||(q<x4&&q>x5)||(q==x4&&w==y4)||(q==x5&&w==y5)) {
                        p++;
                        l=1;
                    }
                   if((o>=x6&&o<=x5)||(o<=x6&&o>=x5)||(o==x6&&r==y6)||(o==x5&&r==y5)) {
                        p++;
                        j=1;                  
                    }
                  if((x7>=x3&&x7<=x6)||(x7<=x3&&x7>=x6)||(x7==x3&&y7==y3)||(x7==x6&&y7==y6)) {
                    p++;
                    n=1;                  
                }
                   System.out.print(p);                                       
                double s3=0.5*Math.abs((x5-x3)*(y6-y4)-(y5-y3)*(x6-x4));    
                  if(p==2&&flag==1) {
                       DecimalFormat js=new DecimalFormat("0.0##");                         
                     if(k==1&&j==1) {                                                      
                            double s1=0.5*Math.abs((o-x4)*(y-y5)-(r-y4)*(x-x5));
                                                                               
                            double s2=Math.abs(s3-s1);                            
                            if(s1<=s2) {
                                System.out.print(" "+js.format(s1)+" "+js.format(s2));
                            }
                            else {
                                System.out.print(" "+js.format(s2)+" "+js.format(s1));
                            }                       
                     }
                     if(k==1&&l==1) {
                        double fi=(double)(Math.sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y)));
                         double se=(double)(Math.sqrt((x-q)*(x-q)+(y-w)*(y-w)));
                         double th=(double)(Math.sqrt((x4-q)*(x4-q)+(y4-w)*(y4-w)));                         
                         double p1=(fi+se+th)/2;
                         double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));                                                                                        
                        double s2=Math.abs(s3-s1);                                               
                         if(s1<=s2) {
                            System.out.print(" "+js.format(s1)+" "+js.format(s2));
                        }
                        else {
                            System.out.print(" "+js.format(s2)+" "+js.format(s1));
                        }                         
                     }
                     if(k==1&&n==1) {
                            double fi=(double)(Math.sqrt((x4-x)*(x4-x)+(y4-y)*(y4-y)));
                             double se=(double)(Math.sqrt((x-x7)*(x-x7)+(y-y7)*(y-y7)));
                             double th=(double)(Math.sqrt((x4-x7)*(x4-x7)+(y4-y7)*(y4-y7)));                         
                             double p1=(fi+se+th)/2;
                             double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                                                                                                               
                            double s2=Math.abs(s3-s1);                            
                             if(s1<=s2) {
                                System.out.print(" "+js.format(s1)+" "+js.format(s2));
                            }
                            else {
                                System.out.print(" "+js.format(s2)+" "+js.format(s1));
                            }                         
                         }
                     if(l==1&&j==1) {
                        double fi=(double)(Math.sqrt((x5-q)*(x5-q)+(y5-w)*(y5-w)));
                          double se=(double)(Math.sqrt((q-o)*(q-o)+(w-r)*(w-r)));
                          double th=(double)(Math.sqrt((x5-o)*(x5-o)+(y5-r)*(y5-r)));                         
                          double p1=(fi+se+th)/2;
                          double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                                                                            
                        double s2=Math.abs(s3-s1);        
                          if(s1<=s2) {
                            System.out.print(" "+js.format(s1)+" "+js.format(s2));
                        }
                        else {
                            System.out.print(" "+js.format(s2)+" "+js.format(s1));
                        }
                     }
                          if(n==1&&l==1) {
                            double s11=0.5*Math.abs((x5-x7)*(w-y6)-(y5-y7)*(q-x6));                                         
                            double s22=Math.abs(s3-s11);                            
                            if(s11<=s22) {
                                System.out.print(" "+js.format(s11)+" "+js.format(s22));
                            }
                            else {
                                System.out.print(" "+js.format(s22)+" "+js.format(s11));
                            }
                          }
                            if(n==1&&j==1) {
                                double fi=(double)(Math.sqrt((x7-o)*(x7-o)+(y7-r)*(y7-r)));
                                  double se=(double)(Math.sqrt((x6-o)*(x6-o)+(y6-r)*(y6-r)));
                                  double th=(double)(Math.sqrt((x6-x7)*(x6-x7)+(y6-y7)*(y6-y7)));                         
                                  double p1=(fi+se+th)/2;
                                  double s1=Math.sqrt(p1*(p1-fi)*(p1-se)*(p1-th));
                                                                                    
                                double s2=Math.abs(s3-s1);        
                                  if(s1<=s2) {
                                    System.out.print(" "+js.format(s1)+" "+js.format(s2));
                                }
                                else {
                                    System.out.print(" "+js.format(s2)+" "+js.format(s1));
                                }
                            }
                          }
                          if(flag==0&&p==2) {
                              
                      }
                   }
            if(choice==5) {                
                String[] c = a.split(" ");            
                String[] d = c[0].split(",");
                String[] f = c[1].split(",");
                String[] e = c[2].split(",");
                String[] g = c[3].split(",");
                String[] h = c[4].split(",");                                
                x1=Double.parseDouble(d[0].substring(2, d[0].length()));
                y1=Double.parseDouble(d[1]);
                x2=Double.parseDouble(f[0]);
                y2=Double.parseDouble(f[1]);
                x3=Double.parseDouble(e[0]);
                y3=Double.parseDouble(e[1]);
                x4=Double.parseDouble(g[0]);
                y4=Double.parseDouble(g[1]);
                x5=Double.parseDouble(h[0]);
                y5=Double.parseDouble(h[1]);
                
                double z1, z2, z3, z4;
                z1 = ((x2 - x1) * (y4 - y1) - (x4 - x1) * (y2 - y1));
                z2 = ((x4 - x1) * (y3 - y1) - (x3 - x1) * (y4 - y1));
                z3 = ((x4 - x2) * (y3 - y2) - (x3 - x2) * (y4 - y2));
                z4 = ((x3 - x2) * (y1 - y2) - (x1 - x2) * (y3 - y2));            
                if((z1 * z2 > 0) && (z3 * z4 > 0)) {
                    flag=1;//是凸四边形
                    
                    System.out.println("in the quadrilateral");
                }
                else {
                    System.out.println("in the triangle");
                    flag=0;
                }
                if(y1==((y3-y2)/(x3-x2))*(x1-x3)+y3||y1==((y3-y4)/(x3-x4))*(x1-x4)+y4||y1==((y4-y2)/(x4-x2))*(x1-x2)+y2) {
                      System.out.println("on the quadrilateral");
                     System.exit(0);
                 }     
                    
                if((x3==x4&&x3==x5&&y3==y4&&y3==y5)||(x3==x4&&x3==x6&&y3==y4&&y3==y6)||(x4==x5&&x4==x6&&y4==y5&&y4==y6)||(x3==x5&&x3==x6&&y3==y5&&y3==y6)) {
                    System.out.println("not a quadrilateral or triangle");
                    System.exit(0);
                }
                if((x3==x4&&y3==y4&&x5==x6&&y5==y6)||(x3==x5&&y3==y5&&x4==x6&&y4==y6)||(x3==x6&&y3==y6&&x4==x5&&y4==y5)) {
                 System.out.println("not a quadrilateral or triangle");
                    System.exit(0);
                }
                  
            }
}
    
}
复制代码

 


复制代码
if(parallelogram(x1,y1,x2,y2,x3,y3,x4,y4)&&k1*k2==-1||x1==x2&&y2==y3){

                return true;

            }else

                return false;

        }

     public static boolean Square(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){//判断正方形
136
            if(Rectangle(x1,y1,x2,y2,x3,y3,x4,y4)&&Linxing(x1,y1,x2,y2,x3,y3,x4,y4)){
                return true;

            }else

                return false;
        }
     public static double judge(double x1,double y1,double x2,double y2,double x3,double y3){

            double a=Distance(x1,y1,x2,y2)+Distance(x1,y1,x3,y3)+Distance(x3,y3,x2,y2);

            double b=a/2;

            return Math.sqrt(b*(b-Distance(x1,y1,x2,y2))*(b-Distance(x1,y1,x3,y3))*(b-Distance(x3,y3,x2,y2)));

        }

     public static boolean aotu(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){

         double a = judge(x1,y1,x2,y2,x3,y3);

         double b = judge(x2,y2,x3,y3,x4,y4);

         double c = judge(x1,y1,x3,y3,x4,y4);

         double d = judge(x1,y1,x2,y2,x4,y4);
153
         if((a+c)==(b+d)) {

             return true;

         }

         else {

             return false;

         }

     }
  
     public static double Perimeter(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4) {

         double p = Distance(x1,y1,x2,y2)+Distance(x2,y2,x3,y3)+Distance(x3,y3,x4,y4)+Distance(x1,y1,x4,y4);

         double q = p*1000;

         double m = Math.round(q);

         return m/1000;

     }(仅截取部分代码)
复制代码

 


五·总结:

*经过7-10周的学习,我认为我主要还是提升了主在各种数据的处理方面,对类和对象的理解,逻辑思维能力,考虑问题全面能力。PTA作业。

*说实话作业的时间是够写的,但是我感觉有难度,pta作业图形界面迭代作业有一定难度,我有好几题没有满分;超星链表题目我也慢慢地写,经过询问多次同学才解决部分;期中考试比较而言更简单,但是最后还是差一点。考察了我们对面向对象的思考了,不再只是写在一个主类了,不只是考察我们的基本写一些代码的问题了,更多的是考察我们对面向对象这一实质的思考与研究,利用数据的私有和不同类之间的关联,考虑问题的全面性。我以后一定要更加努力。

*希望老师能开放多一些测试点供我们学习,没有在规定时间写完也能出一下不计分的原题,可以让没有及时解决问题的同学继续尝试解决,老师也可以讲一讲PTA的题目(在规定时间之后)。

 
 
 

 

posted @   星尘中的卡洛斯  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示