![]() |
#2
林月儿2020-03-16 07:53
|
形状求周长--类继承机制应用
问题描述:
1、定义父类:形状(Shape),其中有1个方法成员:对形状的周长进行计算;
2、分别定义子类:圆形(Circle)、正方形(Square)、矩形(Rectangle)、三角形(Triangle);
3、每个子类重写父类中计算周长的方法,实现对每种形状的周长进行计算;
4、类中的属性成员均修饰为private,方法成员均修饰为public;
5、用@Override注解标出重写的方法。
输入要求:
第1行输入1个正整数T(1<=T<=100),表示有T组测试数据。
每组测试数据输入占1行,首先为1个正整数M(1<=M<=4), 若
1、若M=1,后面输入的为圆形的半径;
2、若M=2,后面输入的为正方形的边长;
3、若M=3,后面输入的为矩形的长和宽;
4、若M=4,后面输入的为三角形的三条边长(确保输入合法)。
以上各数均为正整数,且定义:兀(pai)=3。
输出要求:
对于每组测试数据,输出占1行,为1个整数,即形状的边长。
样例输入:
4
1 2
2 2
3 2 3
4 2 3 4
样例输出:
12
8
10
9
这是我的代码:

import java.util.*;
public class JXNU {
final int π=3;
class shape{
public void count() {
}
}
public class Circle extends shape{
private double r;
public Circle(double r)
{
this.r=r;
}
@Override
public void count() {
System.out.printf("%d",2*π*r);
}
}
public class Square extends shape{
private double a;
public Square(double a)
{
this.a=a;
}
@Override
public void count() {
System.out.printf("%d",4*a);
}
}
public class Rectangle extends shape{
private double a,b;
public Rectangle(double a,double b)
{
this.a=a;
this.b=b;
}
@Override
public void count() {
System.out.printf("%d",2*(a+b));
}
}
public class Triangle extends shape{
private double a,b,c;
public Triangle(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
}
@Override
public void count() {
System.out.printf("%d",a+b+c);
}
}
public void main(String[] args) {
// TODO Auto-generated method stub
int T, M;
double a,b,c,r;
Scanner sc=new Scanner(System.in);
T=sc.nextInt();
while(T-->0){
M=sc.nextInt();
if (M==1){
r=sc.nextDouble();
Circle c1=new Circle(r);
c1.count();
}
else if (M==2){
a=sc.nextDouble();
Square c1=new Square(a);
c1.count();
}
else if (M==3){
a=sc.nextDouble();
b=sc.nextDouble();
Rectangle c1=new Rectangle(a,b);
c1.count();
}
else if (M==4){
a=sc.nextDouble();
b=sc.nextDouble();
c=sc.nextDouble();
if(a + b > c && b + c > a && a + c > b)
{
Triangle c1=new Triangle(a,b,c);
c1.count();
}
else break;
}
}
}
}