慕数据3565510
2017-05-12 21:59
现有Shape图形类,用Rectangle矩形和Circle圆形子类,求图形的周长和面积。
能不能实现在Initail类里,随意输入任意数字,得到不同的矩形面积和周长,得到不同的圆形面积和周长?
我做的只能实现固定半径和长还有宽,求得矩形面积和周长,圆形的面积和周长
//父类代码。 public abstract class shape { public abstract void length(); public abstract void square(); } //长方形子类代码。 public class rectangle extends shape { Scanner scan1=new Scanner(System.in); int l=scan1.nextInt(); Scanner scan2=new Scanner(System.in); int w=scan2.nextInt(); public void length() { int length=2*(l+w); System.out.println("长方形的周长为:"+length); } public void square() { int square=w*l; System.out.println("长方形的面积为:"+square); } } //圆形子类代码。 public class circle extends shape { Scanner scan1=new Scanner(System.in); double r=scan1.nextDouble(); public void length() { double length=2*3.14*r; System.out.println("圆形的周长为:"+length); } public void square() { double square=3.14*r*r; System.out.println("圆形的面积为:"+square); } } //测试类代码。 public class test { public static void main(String[] args) { System.out.println("请输入您要查询的图形类型:1代表长方形,2代表圆形。"); Scanner input =new Scanner(System.in); int num=input.nextInt(); switch (num) { case 1: System.out.println("请依次输入长方形的长度和宽度:"); shape shp1=new rectangle(); shp1.length(); shp1.square(); break; case 2: System.out.println("请输入圆形的半径:"); shape shp2=new circle(); shp2.length(); shp2.square(); break; default: System.out.println("您输入的数值有误,请重新输入。"); } } }
这是我刚发布的问题里面的代码,能运行,只是有点小瑕疵:一次只能计算一种图形,下一次需要重新运行才可以。
Scanner scan1=new Scanner(System.in);
int l=scan1.nextInt();
Scanner scan2=new Scanner(System.in);
这些表达的什么内容啊 ?
可以啊,通过父类引用子类对象,再通过instanceof判断它属于哪个类,然后强制转换,调用相应的方法得到周长和面积
需要增加输入语句,可以按照这样的逻辑:1.选择矩形还是圆(可以用输入1代表矩形,输入2代表圆);2.输入长宽或者半径3.输出周长和面积
Java入门第二季 升级版
530649 学习 · 6091 问题
相似问题