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