JAVA学习之类与对象例题分享(两点确定直线并进行相关操作)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014754841/article/details/84575135

最近在自学JAVA,学到类与对象章节,分享一个自我感觉还可以的例题答案,自己编写的,发出来希望大神们知道一二。

源程序如下:

package Line_Test;

public class Line_Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 线段测试
		Line line = new Line(new Line.Point(2,3),new Line.Point(4,5));
		line.Print_Point();	
		line.Print();		
		
		System.out.println();		

		Line line1 = new Line(new Line.Point(2,3),new Line.Point(2,5));
		line1.Print_Point();	
		line1.Print();		
		
		System.out.println();

		Line line2 = new Line(new Line.Point(2,3),new Line.Point(4,3));
		line2.Print_Point();	
		line2.Print();		
		
		System.out.println();
	}

}

//线段类
class Line{	
	public static class Point{
		private float x,y;
		
		public Point()
		{
			x = 2;
			y = 3;
		}
		
		public Point(float x,float y)
		{
			this.x = x;
			this.y = y;
		}
	}
	
	private Point p0;
	private Point p1;
	
	// 重载构成函数
	public Line()
	{
		this.p0 = new Point(2,3);
		this.p1 = new Point(4,5);
	}	
	// 重载构成函数
	public Line(Point p0,Point p1)
	{
		this.p0 = new Point(p0.x,p0.y);
		this.p1 = new Point(p1.x,p1.y);
	}
	
	// 线段长度
	public float Line_Length()
	{
		if(this.isLineH())
		{
			return Math.abs(p1.y-p0.y);			
		}
		else if(this.isLineV())
		{
			return Math.abs(p1.x-p0.x);
			
		}
		else
		{
			return (float)Math.sqrt((Math.pow((p1.x-p0.x),(p1.x-p0.x))+Math.pow((p1.y-p0.y),(p1.y-p0.y))));
		}
	}
	
	// 线段水平  true:Yes  false:No
	public boolean isLineH()
	{
		return (p0.x==p1.x);
	}

	// 线段垂直  true:Yes  false:No
	public boolean isLineV()
	{
		return (p0.y==p1.y);
	}
	
	// 线段斜率 
	public float LineSlope()
	{
		return (p1.y-p0.y)/(p1.x-p0.x);
	}
	
	// 求线段中点
	public Point LineMid()
	{
		Point p = new Point();
		p.x = (p1.x+p0.x)/2.0f;
		p.y = (p1.y+p0.y)/2.0f;
		return p;
	}
	
	// 打印当前点
	public void Print_Point()
	{
		System.out.print("Point0:("+p0.x+","+p0.y+")"+" ");
		System.out.print("Point1:("+p1.x+","+p1.y+")"+"\r\n");
	}
	
	// 打印计算结果
	public void Print()
	{
		System.out.println("Line length:"+this.Line_Length());
		System.out.println("Line horizontal?"+this.isLineH());
		System.out.println("Line vertical?"+this.isLineV());
		System.out.println("Line slope:"+this.LineSlope());
		System.out.println("Line mid:("+this.LineMid().x+","+this.LineMid().y+")");
	}
	
}

运行结果如下:

感觉JAVA用起来是比较方便,第一次写JAVA程序,还望大神指导一下不足之处。

猜你喜欢

转载自blog.csdn.net/u014754841/article/details/84575135