设计并实现一个直线(Line2D)类,可以通过三个构造函数分别使用点斜式、两点式和截距式三种方法来 构造直线。并对直线做简单的比较。
要求:1. 点需要使用 Point2D 类表示,并且重写 Point2D 类的 equals()方法,来判断两个点是否相同。 2. 重写 Line2D 类的 equals()方法,判断两条直线是否同一条。 3. 编写 boolean isParallel(Line2D)方法,判断两条直线是否平行。
提示:1. 使用两点式构造函数时,注意两点重合则无法唯一确定一条直线。 2. 使用点斜式时,当直线平行于 y 轴时,斜率为无穷大,但是 Java 语言中 double 类型可以表示无穷大,Double. NEGATIVE_INFINITY 和 Double. POSITIVE_INFINITY,请参阅 Java API 文档。 3. 建议将三种构造函数统一成一种表示方法,以方便比较直线是否相等。 4. 在判断两条直线是否平行时,首先要排除两条直线重合的情况。
JAVA题目
答案:1 悬赏:80 手机版
解决时间 2021-03-21 21:35
- 提问者网友:川水往事
- 2021-03-21 01:56
最佳答案
- 五星知识达人网友:底特律间谍
- 2021-03-21 03:14
class Point2D
{
private double x,y;
public Point2D(double param_x,double param_y){
x=param_x;
y=param_y;
}
public boolean equals(Point2D b){
if(x==b.x&&y==b.y)
return true;
return false;
}
public double getx(){
return x;
}
public double gety(){
return y;
}
}
class Line2D
{
private double A,B,C;
public Line2D(double k,double b){
A=k;
B=-1;
C=b;
}
public Line2D(Point2D a,Point2D b){
if(!a.equals(b))
{
A=1/(a.getx()-b.getx());
B=1/(b.gety()-a.gety());
C=b.gety()/(a.gety()-b.gety())-b.getx()/(a.getx()-b.getx());
}
else
{
System.out.print("Two points is same!\n");
System.exit(0);
}
}
public Line2D(double a,double b,int t){
if(t==1)
{
A=b;
B=a;
C=-a*b;
}
else
{
System.out.println("Format error!");
System.exit(0);
}
}
public boolean equals(Line2D b){
if(A==b.A&&B==b.B&&C==b.C)
return true;
return false;
}
public boolean isParallel(Line2D b){
if(A*b.B==B*b.A&&C!=b.C)
return true;
return false;
}
}
{
private double x,y;
public Point2D(double param_x,double param_y){
x=param_x;
y=param_y;
}
public boolean equals(Point2D b){
if(x==b.x&&y==b.y)
return true;
return false;
}
public double getx(){
return x;
}
public double gety(){
return y;
}
}
class Line2D
{
private double A,B,C;
public Line2D(double k,double b){
A=k;
B=-1;
C=b;
}
public Line2D(Point2D a,Point2D b){
if(!a.equals(b))
{
A=1/(a.getx()-b.getx());
B=1/(b.gety()-a.gety());
C=b.gety()/(a.gety()-b.gety())-b.getx()/(a.getx()-b.getx());
}
else
{
System.out.print("Two points is same!\n");
System.exit(0);
}
}
public Line2D(double a,double b,int t){
if(t==1)
{
A=b;
B=a;
C=-a*b;
}
else
{
System.out.println("Format error!");
System.exit(0);
}
}
public boolean equals(Line2D b){
if(A==b.A&&B==b.B&&C==b.C)
return true;
return false;
}
public boolean isParallel(Line2D b){
if(A*b.B==B*b.A&&C!=b.C)
return true;
return false;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯