【发布时间】:2016-10-17 23:00:17
【问题描述】:
我不得不编写一个代码,通过一个扩展几何对象的类来创建一个三角形。然后我们必须编写一个 equals 方法来与三角形进行比较。我不确定如何调用另一个三角形来比较它。
public class Triangle extends GeometricObject {
private double side1 ;
private double side2 ;
private double side3 ;
public final double DEFAULT = 1.0;
public Triangle(){
super();
side1= DEFAULT;
side2= DEFAULT;
side3= DEFAULT;
}
public Triangle(String color, boolean filled, double side1, double side2, double side3)throws IllegalTriangleException{
super(color,filled);
this.side1=side1;
this.side2=side2;
this.side3=side3;
if (side1>=side2+side3||side2>=side1+side3|| side3>=side1+side2){
throw new IllegalTriangleException(side1,side2,side3);
}
}
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) {
this.side3 = side3;
}
public double getArea(double s1, double s2, double s3){
side1= s1;
side2= s2;
side3= s3;
double area = .5*(s1*s2*s3);
return area;
}
public double getPerimeter(double s1, double s2, double s3){
side1=s1;
side2=s2;
side3=s3;
double perim = s1+s2+s3;
return perim;
}
public String toString(){
return super.toString()+ "triangle side 1 +"+ side1+ " side 2= "+side2+" side 3= "+side3;
}
public boolean equals(Object o){
}
}
public class TestTriangle {
public void main (String[]args){
try {
GeometricObject tri1 = new Triangle ("yellow",true,1.0,1.5,1.0);
GeometricObject tri2 = new Triangle ("red ", true, 2.0,3.7,5.0);
} catch (IllegalTriangleException e) {
System.out.print("invalid Side Lengths");
}
}
}
【问题讨论】:
-
您的 IDE 应该能够自动生成
equals和hashCode方法... -
另外,添加
@Override!只需投射对象并根据任何标准进行比较并相应返回 -
上次查看时,三角形的面积不是
.5*(s1*s2*s3) -
自动实施该方法的建议(以及迄今为止提出的答案)似乎非常短视。至少,应该认为边长为 (4,5,6) 的三角形与边长为 (6,4,5) 的三角形“相等”。
-
@Marco13 虽然您对三角形等式算法正确性的观察是准确的,但问题(显然)不是关于这个的。它似乎是关于通用 equals 方法的正确使用和正确实现。这可能是错误的。