其他分享
首页 > 其他分享> > 第二次博客

第二次博客

作者:互联网

           

对于期中考试和四边形与五边形的题目,我刚开始绝对是懵的,但经过这些天的摸索已经有了初步理解。题目可以说很难。

涉及到单位知识点有继承、多态、封装。题量不算多但遭不住它难啊!

期中考试题:

package pta5;



import java.util.Scanner;

public class As {

    public static void main(String[] args) {
        
        
        
                              Scanner input = new Scanner(System.in);   
                             double x1 = input.nextDouble();
                             double y1 = input.nextDouble();
                             double x2 = input.nextDouble();
                             double y2 = input.nextDouble();
                             String color = input.nextLine();
                             
                             Point one =  new Point(x1,y1);
                             Point second =  new Point(x2,y2);
                             Line a = new Line(one, second, color);
                             a.display();
                           
    }

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

    }

    public Point(double x,double y) {
        this.x=x;
        this.y=y;
    }

    public void setX(double x) {
        if(x>0&&x<=200)
        this.x = x;
        else
        this.y = 0;        
    }
    public double getX() {
        return x;
    }
    public void setY(double y) {
        if(y>0&&y<=200)
        this.y = y;
        else
        this.y = 0;
        
    }
    public double getY() {
        return y;
    }
    
    
    
    
}
/* 
 设计一个类表示平面直角坐标系上的线Line,私有属性除了标识线段两端的点point1、point2外,
 还有一个字符串类型的color,用于表示该线段的颜色,同样,除构造方法以及属性的getter与setter方法外,
 定义一个用于计算该线段长度的方法getDistance(),还有一个用于显示信息的方法display(),用来输出线段的相关信息
 */
 class Line{
     
     private Point first;
     private Point second;
     String color;

        public Line() {
            
        }
        
        public Line(Point first, Point second, String color) {
            this.first = first;
            this.second= second;
            this.color = color;
        }
        
        
     public Double getDistance() 
        {
        
            return Math.sqrt(Math.pow(second.getY() - first.getY(),2) + Math.pow(second.getX() - first.getX(),2)) ;
        }
     
     public void display() {    
              
            System.out.println("The line's color is:"+color);
            System.out.println("The line's begin point's Coordinate is:"+first.getX()+" "+first.getY());
            
            System.out.println("The line's end point's Coordinate is:"+second.getX()+" "+second.getY());
            
            System.out.println("The line's length is:"+String.format("%.2f", getDistance()));

    
 }
 }
 
 
 
 
 
 
 
 

第一题还是较为简单,两个类,但还需改进比如未按题目要求在point类里添加display();

所以可以在line改写为

System.out.println("The line's begin point's Coordinate is:");
p1.display();
System.out.println("The line's end point's Coordinate is:");
p2.display();

期中考试第二题

package pta5;

import java.util.Scanner;
public class Sdfgj {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		double x1 = in.nextDouble();
		double y1 = in.nextDouble();
		double x2 = in.nextDouble();
		double y2 = in.nextDouble();
		String color = in.next();
		Point p1 = new Point(x1, y1);
		Point p2 = new Point(x2, y2);
		Plane plane = new Plane(color);
		Line line = new Line(p1, p2, color);
		line.display();
		 Element element1=p1;
         element1.display();
         
         Element element2= p2;
         element2.display();
         
         
         Element element4 = plane;
         element4.display();
	}
}
	abstract class Element{
	    public abstract void display();
	
}
	class Plane extends Element{
	    private String color;
	    Plane(String color){
	        this.color=color;
	    }
	    public String getColor(){
	        return this.color;
	    }
	    public void setColor(String color){
	        this.color=color;
	    }
	    public void display(){
	        System.out.println("The Plane's color is:"+this.color);
	    }
	}
class Point extends Element{
	private double x;
	private double y;
	
	public  Point() {
		
	}
	
	public Point(double x, double y) {
		this.x = x;
		this.y = y;
	}
	
	public void setX(double x) {
		this.x = x;
	}
	
	public double getX() {
		return x;
	}
	
	public void setY(double y) {
		this.y = y;
	}
	
	public double getY() {
		return y;
	}

	public void display() {
		System.out.printf("(%.2f,%.2f)\n",this.x,this.y);
	}
	
	
}
class Line {
	private Point p1;
	private Point p2;
	private String color;
	
	public Line() {
		
	}
	
	public Line(Point p1, Point p2, String color) {
		this.p1 = p1;
		this.p2 = p2;
		this.color = color;
	}
	
	public void setPoint1(Point p1) {
		this.p1 = p1;
	}
	
	public Point getPoint1() {
		return p1;
	}
	
	public void setPoint2(Point p2) {
		this.p2 = p2;
	}
	
	public Point getPoint2() {
		return p2;
	}
	
	
	public double getDistance() {
		double distance;
		distance = Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2) + Math.pow(p1.getY() - p2.getY(),2 ));
		return distance;
	}
	
	public void display() {
		if(p1.getX() > 0 && p1.getX() <=200 && p1.getY() > 0 && p1.getY() <= 200 && p2.getX() > 0 && p2.getX() <= 200 && p2.getY() > 0 && p2.getY() <=200) {
				System.out.println("The line's color is:"+color);
				System.out.println("The line's begin point's Coordinate is:");
				p1.display();
				System.out.println("The line's end point's Coordinate is:");
				p2.display();
				System.out.println("The line's length is:"+String.format("%.2f", getDistance()));
		}
		else {
			System.out.println("Wrong Format");
		}
	}
	
}

  其实我这代码并不完全正确当我引用

Element element3= line;
element3.display();报错Type mismatch: cannot convert from Line to Element

第三通容器类说实话我不会。

第四次大作业:

蛟龙号、、、、、不做分析

 

四边形的题:

用户输入一组选项和数据,进行与四边形有关的计算。
以下四边形顶点的坐标要求按顺序依次输入,连续输入的两个顶点是相邻顶点,第一个和最后一个输入的顶点相邻。
选项包括:
1:输入四个点坐标,判断是否是四边形、平行四边形,判断结果输出true/false,结果之间以一个英文空格符分隔。
2:输入四个点坐标,判断是否是菱形、矩形、正方形,判断结果输出true/false,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
3:输入四个点坐标,判断是凹四边形(false)还是凸四边形(true),输出四边形周长、面积,结果之间以一个英文空格符分隔。 若四个点坐标无法构成四边形,输出"not a quadrilateral"
4:输入六个点坐标,前两个点构成一条直线,后四个点构成一个四边形或三角形,输出直线与四边形(也可能是三角形)相交的交点数量。如果交点有两个,再按面积从小到大输出四边形(或三角形)被直线分割成两部分的面积(不换行)。若直线与四边形或三角形的一条边线重合,输出"The line is coincide with one of the lines"。若后四个点不符合四边形或三角形的输入,输出"not a quadrilateral or triangle"。
后四个点构成三角形的情况:假设三角形一条边上两个端点分别是x、y,边线中间有一点z,另一顶点s:
1)符合要求的输入:顶点重复或者z与xy都相邻,如x x y s、x z y s、x y x s、s x y y。此时去除冗余点,保留一个x、一个y。
2) 不符合要求的输入:z 不与xy都相邻,如z x y s、x z s y、x s z y
5:输入五个点坐标,输出第一个是否在后四个点所构成的四边形(限定为凸四边形,不考虑凹四边形)或三角形(判定方法见选项4)的内部(若是四边形输出in the quadrilateral/outof the quadrilateral,若是三角形输出in the triangle/outof the triangle)。如果点在多边形的某条边上,输出"on the triangle或者on the quadrilateral"。若后四个点不符合四边形或三角形,输出"not a quadrilateral or triangle"。

输入格式:

基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。

输出格式:

基本输出格式见每种选项的描述。
异常情况输出:
如果不符合基本格式,输出"Wrong Format"。
如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。
注意:输出的数据若小数点后超过3位,只保留小数点后3位,多余部分采用四舍五入规则进到最低位。小数点后若不足3位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333,1.0按格式输出为1.0

选项1、2、3中,若四边形四个点中有重合点,输出"points coincide"。
选项4中,若前两个输入线的点重合,输出"points coincide"。

 

分析:

a.double x;double y;                                                //定义横坐标x,纵坐标y

b.public void input(Arraylist<String> a);                  //给x,y赋值

d.public boolean chack_point(Point p);                   //判断两点是否重合

a.Point p1 = new Point();Point p2 = new Point();

b.public void input(Arraylist<String> a);               //给点p1,p2赋值

c.public double calculate_slope(void);                 //计算线的斜率

public double calculatedistance(Point p)              //计算点到另一点的距离即边的距离

用于计算1\2要求只要相邻的两边斜路不相等即可构成四边形,当相对的两边平行且相等,构成平行四边形,

当相邻的两条边斜相乘等于-1构成矩形在递进,在其基础上四边相等即正方,同时也可计算周长和面积(两个三角形的面积)

但凹凸四边形的判定很难.相了很久发现

四边形面积,可以拆为两个三角形面积之和.

对于凸四边形, 任意不相邻两点连线拆开的三角形面积和

但凹四边形,却不是这样的,只有凹点对应的连线拆开的三角形面积和.

基于上面两条就可以判断了:

p1,p2,p3,p4 四个点顺序组成的四边形.

s0 = S(p1,p2,p3)+ S(p3,p4,p1)

s1 = S(p2,p3,p4)+S(p4,p1,p2)

如果s0 == s1 则是凸四边形.否则就是凹四边形.

五边形的题老实说毫无头绪.

总结:

这几次作业暴露了我很多的问题意识到总结学习知识量不够,不自觉等,基本还停留在原地,现在我还只是学习到了Java的一些皮毛,对Java的学习还远远不够,

使用题目给的类图发现会做一点,但在自己进行类设计时发现自己对设计懵逼,多加练习,pta也能得到自己想要得的分。

 

标签:p2,p1,Point,double,博客,四边形,第二次,public
来源: https://www.cnblogs.com/306119fy/p/16275400.html