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 19:55:20 浏览: 40
以下是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 r;
public Circle(double r) {
this.r = r;
}
public double length() {
return 2 * 3.14 * r;
}
}
public class ShapeTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
Shape shape = null;
if (a > 0 && b > 0 && c > 0) {
shape = new Triangle(a, b, c);
} else if (a > 0 && b > 0) {
shape = new Rectangle(a, b);
} else if (a > 0) {
shape = new Circle(a);
}
if (shape != null) {
System.out.printf("%.2f\n", shape.length());
} else {
System.out.println("0.00");
}
}
sc.close();
}
}
```
输入数据中读入三个数,如果都大于0,则表示构成三角形,否则判断是否能构成长方形(两个数大于0),否则判断是否能构成圆形(一个数大于0)。根据输入的数据类型创建相应的对象,然后调用对象的length()方法求周长并输出。注意结果保留两位小数。
阅读全文