利用Java求圆形、矩形、三角形的面积。
时间: 2024-10-26 10:03:36 浏览: 19
在Java中,你可以通过创建类来定义每个形状并重写计算面积的方法。这里是一个简单的示例,展示了如何计算圆形、矩形和三角形的面积:
```java
public class GeometryCalculator {
// 定义基础形状类
public abstract class Shape {
protected double[] dimensions;
public Shape(double... dimensions) {
this.dimensions = dimensions;
}
// 抽象方法,用于计算面积
public abstract double calculateArea();
// 返回形状的描述信息
public String describeShape() {
return "Shape with dimensions: " + Arrays.toString(dimensions);
}
}
// 圆形类,继承自Shape
public class Circle extends Shape {
public Circle(double radius) {
super(radius, radius); // 半径即直径
}
@Override
public double calculateArea() {
return Math.PI * Math.pow(dimensions[0], 2); // 使用π乘以半径的平方
}
}
// 矩形类,继承自Shape
public class Rectangle extends Shape {
public Rectangle(double length, double width) {
super(length, width);
}
@Override
public double calculateArea() {
return dimensions[0] * dimensions[1]; // 长度乘以宽度
}
}
// 三角形类,继承自Shape
public class Triangle extends Shape {
public Triangle(double sideA, double sideB, double sideC) {
if (sideA + sideB <= sideC || sideA + sideC <= sideB || sideB + sideC <= sideA) { // 三角形条件判断
throw new IllegalArgumentException("Invalid triangle sides"); // 无效的三角形边长
}
super(sideA, sideB, sideC);
}
@Override
public double calculateArea() {
double semiPerimeter = (dimensions[0] + dimensions[1] + dimensions[2]) / 2; // 半周长
return Math.sqrt(semiPerimeter * (semiPerimeter - dimensions[0]) * (semiPerimeter - dimensions[1]) * (semiPerimeter - dimensions[2])); // 海伦公式
}
}
public static void main(String[] args) {
Circle circle = new Circle(5);
Rectangle rectangle = new Rectangle(4, 6);
Triangle triangle = new Triangle(3, 4, 5);
try {
System.out.println("Circle area: " + circle.calculateArea());
System.out.println("Rectangle area: " + rectangle.calculateArea());
System.out.println("Triangle area: " + triangle.calculateArea());
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
这段代码首先定义了一个抽象类`Shape`,然后为其提供了三个派生类`Circle`, `Rectangle`, 和 `Triangle`,每个类都有自己的构造函数和重写的`calculateArea()`方法。在`main`方法里,我们实例化了这三个图形,并计算了它们的面积。
注意,对于三角形,我们在构造函数中检查了边长是否满足构成三角形的条件,并在面积计算前进行了异常处理。
阅读全文