定义接口或类 Shape,定义求周长的方法length()。 定义如下类,实现接口Shape或父类Shape的方法。 (1)三角形类Triangle (2)长方形类Rectangle (3)圆形类Circle等。 定义测试类ShapeTest,用Shape接口(或类)定义变量shape,用其指向不同类形的对象,输出各种图形的周长。并为其他的Shape接口实现类提供良好的扩展性。 提示: 计算圆周长时PI取3.14。 输入格式: 输入多组数值型数据(double); 一行中若有1个数,表示圆的半径; 一行中若有2个数(中间用空格间隔),表示长方形的长度、宽度。 一行中若有3个数(中间用空格间隔),表示三角形的三边的长度。(需要判断三个边长是否能构成三角形) 若输入数据中有0或负数,则不表示任何图形,周长为0。 输出格式: 行数与输入相对应,数值为根据每行输入数据求得的图形的周长。
时间: 2024-02-22 16:57:30 浏览: 62
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
以下是 Java 代码实现:
```java
interface Shape {
double length();
}
class Triangle implements Shape {
private double a, b, c;
public 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;
}
}
}
class Rectangle implements Shape {
private double length, width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public double length() {
if (length <= 0 || width <= 0) { // 判断是否合法
return 0;
} else {
return 2 * (length + width);
}
}
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double length() {
if (radius <= 0) { // 判断是否合法
return 0;
} else {
return 2 * 3.14 * radius;
}
}
}
public class ShapeTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
double a = input.nextDouble();
if (a <= 0) {
System.out.println("0");
} else if (input.hasNextDouble()) {
double b = input.nextDouble();
if (b <= 0) {
System.out.println("0");
} else {
Rectangle rectangle = new Rectangle(a, b);
System.out.println(rectangle.length());
}
} else {
double b = input.nextDouble();
double c = input.nextDouble();
Triangle triangle = new Triangle(a, b, c);
System.out.println(triangle.length());
}
}
}
}
```
程序中定义了接口 Shape,并且三角形、长方形和圆形都实现了该接口。每个类都重写了接口中的方法 length(),计算出该图形的周长。在 ShapeTest 类中,使用 Scanner 读入输入,并根据输入的参数不同创建不同的对象,通过对象调用 length() 方法计算周长并输出。
阅读全文