1、定义一个接口 Shape 用于表示图形,其包含一个 double length() 的方法用于求周长。 2、定义三角形类 Triangle 、长方形类 Rectangle 、圆形类Circle分别实现接口 Shape 3、定义测试类ShapeTest并使用 Shape接口定义变量shape,用其指向不同类形的对象,输出各种图形的周长。 提示: 1、计算圆周长时PI取3.14即可; 2、需要判断能否构成三角形(任意两个边的和大于第三边),不能构成三角形的话周长为0。 输入格式: 输入多组double型数据,具体如下: 1 //表示圆的半径; 2 3 //表示长方形的长度、宽度 4 5 6 //表示三角形的三边的长度 //若输入数据中有0或负数,则不表示任何图形,周长为0。 输出格式: 图形的周长。
时间: 2024-03-05 16:55:10 浏览: 137
下面是实现题目要求的完整代码:
```java
import java.util.Scanner;
// 定义 Shape 接口
interface Shape {
double length();
}
// 定义三角形类 Triangle
class Triangle implements Shape {
double a, b, c;
Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double length() {
if (a + b > c && a + c > b && b + c > a) {
return a + b + c;
} else {
return 0;
}
}
}
// 定义长方形类 Rectangle
class Rectangle implements Shape {
double length, width;
Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public double length() {
return 2 * (length + width);
}
}
// 定义圆形类 Circle
class Circle implements Shape {
double radius;
Circle(double radius) {
this.radius = radius;
}
public double length() {
return 2 * 3.14 * radius;
}
}
// 定义测试类 ShapeTest
public class ShapeTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
Shape shape;
if (a <= 0 || b <= 0 || c <= 0) { // 如果输入数据中有0或负数,则不表示任何图形,周长为0。
shape = null;
} else if (a == b && b == c) { // 如果三边相等,构成等边三角形
shape = new Triangle(a, b, c);
} else if (a == b || b == c || a == c) { // 如果两边相等,构成等腰三角形
shape = new Triangle(a, b, c);
} else { // 其他情况构成普通三角形
shape = new Triangle(a, b, c);
}
if (shape == null) {
System.out.println(0);
} else {
System.out.println(shape.length());
}
}
scanner.close();
}
}
```
程序首先定义了一个 Shape 接口,包含了一个 length() 方法,用于求周长。然后分别定义了 Triangle、Rectangle 和 Circle 三个类,分别实现了 Shape 接口。Triangle 类的 length() 方法需要判断三条边能否构成三角形,如果可以则计算周长,否则返回 0。Rectangle 类的 length() 方法直接计算周长。Circle 类的 length() 方法使用了固定的 PI 值。
最后在 ShapeTest 类中,使用 Scanner 读入多组数据,判断输入的数据是否能够构成三角形,再根据输入的数据类型创建相应的对象,调用 length() 方法计算周长并输出。如果输入数据中有 0 或负数,则不表示任何图形,周长为 0。
阅读全文