定义一个抽象基类Shape,它包含抽象方法getArea(),从Shape类派生出Circle和Rectangle类,这两个类都用getArea()方法计算对象的面积。在主函数中,定义一个Shape数组,存入n个Rectangle类和Circle类的对象,并找出数组中面积最小的元素。
我的问题主要在于,如何输出这个元素?
Java新人求助,求此题代码如何编写,谢谢大佬们!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- _YuLF 2020-10-18 18:52关注
输出元素可以重写toString方法;
下面是具体得实现,分别用到了【抽象工厂设计模式】【冒泡排序】抽象基类
public abstract class Shape { public abstract int getArea(); }
两个子实现类
public class Rectangle extends Shape { private int area; //假设这个形状得面积为传进来得值”假设“ public Rectangle(int i){ this.area =i; } @Override public int getArea() { //具体计算面积的参数,得看你业务中得参数,可以通过构造函数在创建对象时传参进来进行计算面积 //具体你业务中计算长方形的面积, 最后返回的是这个面积的值, return this.area; } @Override public String toString() { return "Rectangle{" + "area=" + area + '}'; } }
public class Circle extends Shape { private int area; //假设这个形状得面积为传进来得值”假设“ public Circle(int i){ this.area =i; } @Override public int getArea() { //具体计算面积的参数,得看你业务中得参数,可以通过构造函数在创建对象时传参进来进行计算面积 //具体你业务中计算长方形的面积 最后返回的是这个面积的值... return this.area; } @Override public String toString() { return "Circle{" + "area=" + area + '}'; } }
主函数
public class TestMain { public static void main(String[] args){ //定义一个Shape数组 Shape[] shapes = new Shape[10]; //模拟存入10个/n个Rectangle类和Circle类的对象 for(int i =0;i<5;i++){ shapes = addElement(shapes,new Rectangle(randomArea())); shapes = addElement(shapes,new Circle(randomArea())); } System.out.println("Shape数组中得所有元素列表:"+Arrays.asList(shapes)); //并找出数组中面积最小的元素。 for(int i=0;i<shapes.length-1;i++) { for(int j=0;j<shapes.length-1-i;j++) { if(shapes[j].getArea()>shapes[j+1].getArea()) { Shape temp=shapes[j]; shapes[j]=shapes[j+1]; shapes[j+1]=temp; } } } System.out.println("Shape数组面积经过冒泡排序后得元素列表:"+Arrays.asList(shapes)); System.out.println("Shape数组面积最小得元素是:"+shapes[0]); } /** * 随机一个数作为形状对象得面积(真正得面积是你自己再类得getArea计算,我这里只是模拟) * @return */ public static int randomArea(){ return new Double(Math.random()*100).intValue(); } /** * * @param shapes * @param shape 需要添加得元素 * @return */ public static Shape[] addElement(Shape[] shapes,Shape shape){ for(int i =0;i<shapes.length;i++){ if(shapes[i] == null){ shapes[i] = shape; break; } } return shapes; } }
输出
Shape数组中得所有元素列表:[Rectangle{area=19}, Circle{area=72}, Rectangle{area=61}, Circle{area=17}, Rectangle{area=3}, Circle{area=69}, Rectangle{area=39}, Circle{area=66}, Rectangle{area=63}, Circle{area=96}] Shape数组经过冒泡排序后得元素列表:[Rectangle{area=3}, Circle{area=17}, Rectangle{area=19}, Rectangle{area=39}, Rectangle{area=61}, Rectangle{area=63}, Circle{area=66}, Circle{area=69}, Circle{area=72}, Circle{area=96}] Shape数组最小得元素是:Rectangle{area=3}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)