定义一个抽象基类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 Oracle中如何从clob类型截取特定字符串后面的字符
- ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
- ¥15 MATLAB中streamslice问题
- ¥15 如何在炒股软件中,爬到我想看的日k线
- ¥15 seatunnel 怎么配置Elasticsearch
- ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
- ¥15 (标签-MATLAB|关键词-多址)
- ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
- ¥500 52810做蓝牙接受端
- ¥15 基于PLC的三轴机械手程序