请各位帮我看看我的代码哪里错了
问题:形状求周长--类继承机制应用
问题描述:
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; } } } }