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

最近在自学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程序,还望大神指导一下不足之处。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值