java定义一个三角形类,该类包括3个Point对象。定义有参的构造方法,给定3个点,先判断是否构成三角形,如果不能构成三角形,初始化一个默认的三角形。定义无参的构造方法。提供求面积和周长的方法。最后编写一个类,测试该三角形类。
时间: 2023-09-26 12:06:46 浏览: 58
### 回答1:
三角形类的实现如下:
```java
public class Triangle {
private Point a;
private Point b;
private Point c;
public Triangle(Point a, Point b, Point c) {
if (isTriangle(a, b, c)) {
this.a = a;
this.b = b;
this.c = c;
} else {
this.a = new Point(0, 0);
this.b = new Point(0, 1);
this.c = new Point(1, 0);
}
}
public Triangle() {
this(new Point(0, 0), new Point(0, 1), new Point(1, 0));
}
private boolean isTriangle(Point a, Point b, Point c) {
double ab = a.distance(b);
double ac = a.distance(c);
double bc = b.distance(c);
return (ab + ac > bc) && (ab + bc > ac) && (ac + bc > ab);
}
public double getArea() {
double ab = a.distance(b);
double ac = a.distance(c);
double bc = b.distance(c);
double p = (ab + ac + bc) / 2;
return Math.sqrt(p * (p - ab) * (p - ac) * (p - bc));
}
public double getPerimeter() {
return a.distance(b) + a.distance(c) + b.distance(c);
}
public Point getA() {
return a;
}
public Point getB() {
return b;
}
public Point getC() {
return c;
}
public void setA(Point a) {
if (isTriangle(a, b, c)) {
this.a = a;
}
}
public void setB(Point b) {
if (isTriangle(a, b, c)) {
this.b = b;
}
}
public void setC(Point c) {
if (isTriangle(a, b, c)) {
this.c = c;
}
}
}
```
测试代码如下:
```java
public class TriangleTest {
public static void main(String[] args) {
Point a = new Point(0, 0);
Point b = new Point(0, 1);
Point c = new Point(1, 0);
Triangle t1 = new Triangle(a, b, c);
System.out.println("Triangle 1: " + t1.getArea() + " " + t1.getPerimeter());
Point d = new Point(3, 0);
Triangle t2 = new Triangle(a, b, d);
System.out.println("Triangle 2: " + t2.getArea() + " " + t2.getPerimeter());
t2.setC(c);
System.out.println("Triangle 2: " + t2.getArea() + " " + t2.getPerimeter());
}
}
```
输出结果如下:
```
Triangle 1: 0.5 3.414213562373095
Triangle 2: 0.0 6.324555320336759
Triangle 2: 0.5 3.414213562373095
```
### 回答2:
首先,我们需要定义一个Point类,该类包含两个私有变量x和y,表示点的横纵坐标。然后我们定义三角形类Triangle,该类中包含3个Point对象p1、p2、p3作为三角形的顶点。
为了实现有参构造方法,我们需要在Triangle类中定义一个构造方法,以接受3个Point对象作为参数。在构造方法中,我们首先判断这3个点是否能够构成三角形。我们可以通过计算三角形的三边长度来判断,若有任意两边之和小于第三边,则这3个点无法构成三角形。若不能构成三角形,则我们初始化一个默认的三角形,即3个点均为原点(0,0)。
为了实现无参构造方法,我们在Triangle类中定义一个无参构造方法。这个构造方法中,我们初始化三个Point对象,默认为原点(0,0)。
接下来,我们需要提供求面积和周长的方法。面积我们可以通过海伦公式来计算,即根据三边长度求解:
面积 = sqrt(s * (s - a) * (s - b) * (s - c))
其中s=(a+b+c)/2为半周长,a、b、c分别为三边长度。
周长就是三边长度之和。
最后,我们编写一个测试类,通过创建Triangle对象并调用其方法进行测试。可以输入三个点的坐标,然后根据创建的Triangle对象判断是否构成三角形,若构成则输出面积和周长,若不构成则输出默认的面积和周长。
这样,我们就完成了一个java的三角形类及其测试。
### 回答3:
首先,我们定义一个Point类表示一个点,包括x和y两个坐标属性。在构造方法中传入x和y的参数,并提供相应的get方法获取坐标。
然后,我们定义Triangle类表示一个三角形,包括三个Point对象,以及面积和周长相关的方法。我们需要实现有参的构造方法和无参的构造方法。
有参的构造方法中,我们传入三个Point对象,首先判断是否构成三角形。我们可以通过计算三个点的距离是否满足三角形的边长关系来判断,如果不能构成三角形,则初始化一个默认的三角形,即三个点坐标都为(0, 0)。
在Triangle类中,我们可以提供计算面积和周长的方法。计算面积可以使用海伦公式,即根据三个边长计算三角形的半周长和面积。计算周长则是三个边长的和。
最后,我们编写一个测试类,创建Triangle对象,并通过调用相关方法计算面积和周长。我们可以传入三个坐标点来创建三角形对象,并输出其面积和周长。