定义一个抽象基类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}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报