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 18:53:29 浏览: 292
设计一个Shape接口和它的两个实现类Square和Circle,要求如下
以下是Java代码实现:
```
import java.util.Scanner;
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() {
return 2 * (length + width);
}
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double length() {
return 2 * 3.14 * radius;
}
}
public class ShapeTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
double a = scanner.nextDouble();
if (a <= 0) {
System.out.println(0);
continue;
}
Shape shape;
if (scanner.hasNextDouble()) {
double b = scanner.nextDouble();
if (b <= 0) {
System.out.println(0);
continue;
}
shape = new Rectangle(a, b);
} else {
double b = scanner.nextDouble();
double c = scanner.nextDouble();
if (b <= 0 || c <= 0) {
System.out.println(0);
continue;
}
shape = new Triangle(a, b, c);
}
System.out.println(shape.length());
}
scanner.close();
}
}
```
具体思路如下:
1. 定义一个接口 Shape ,其中包含一个方法 length() 用于求周长。
2. 定义三个类 Triangle 、 Rectangle 、 Circle 分别实现 Shape 接口,实现各自的求周长方法。
3. 在测试类 ShapeTest 中,使用 Shape 接口定义变量 shape ,并根据输入的数据类型实例化相应的对象。
4. 输出各种图形的周长。
需要注意的点:
1. 判断能否构成三角形时,需要满足任意两个边的和大于第三边。
2. 若输入数据中有 0 或负数,则不表示任何图形,周长为 0。
3. 计算圆周长时,PI 取 3.14 即可。
阅读全文