Реализация классов, равнобедренный треугольник
Мне нужно реализовать класс Triangle, и я застрял при сравнении длин сторон, чтобы определить, действительно ли треугольник равнобедренный. Вот что у меня так далеко:
public class TriangleIsosceles {
private Point cornerA;
private Point cornerB;
private Point cornerC;
private int x1;
private int y1;
private int x2;
private int y2;
private int x3;
private int y3;
public TriangleIsosceles(){
cornerA = new Point(0,0);
cornerB = new Point(10,0);
cornerC = new Point(5,5);
}
public TriangleIsosceles(int x1,int y1,int x2,int y2,int x3,int y3){
cornerA = new Point(x1,y1);
cornerB = new Point(x2,y2);
cornerC = new Point(x3,y3);
}
public String isIsosceles(String isIsosceles){
return isIsosceles;
}
}
Point
объект, который я использую это:
public class Point {
private int x;
private int y;
public Point(){
this(0,0);
}
public Point(int x, int y){
this.x = x;
this.y = y;
}
public void setX(int x){
this.x=x;
}
public void setY(int y){
this.y=y;
}
public void printPoint(){
System.out.println(x + y);
}
public String toString(){
return "x = "+x+" y = "+y;
}
}
В другом классе (LineSegment
) Я создал метод length()
это определяет расстояние двух точек. Который выглядит как:
public double length() {
double length = Math.sqrt(Math.pow(x1-x2,2) + Math.pow(y1-y2,2));
return length;
}
Как я могу использовать этот метод, чтобы помочь мне найти длину треугольника в моем TriangleIsosceles
учебный класс?
Я знаю, мне нужно посмотреть, (lenghtAB == lengthBC || lengthBC == lenghtCA || lengthAB == lengthCA)
,
2 ответа
Быстрое, абсолютно правильное решение - сделать метод длины статическим служебным методом, т.е.
public static double length(x1, y1, x2, y2)
{
return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
}
or
public static double length(Point p1, Point p2)
{
return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
}
Вы также можете добавить метод в саму Point, т.е. в класс Point добавить:
public double calcDistance(Point otherPoint)
{
return Math.sqrt(Math.pow(this.x - otherPoint.x, 2) + Math.pow(this.y - otherPoint.y, 2));
}
Предполагая ваш LineSegment
класс имеет конструктор, который занимает два Point
объекты, вы должны создать три LineSegment
объекты (которые вы можете кэшировать в Triangle
учебный класс). Затем с помощью LineSegment#getLength()
Вы можете определить, имеют ли любые две стороны одинаковую длину.
Поскольку это похоже на домашнюю работу, я не дам вам полного решения.