大一JAVA招新题希望各位大能能解答

设计一个形状Shape抽象类和它的两个实现类:圆Circle和矩形Rectangle,实现各自构造方法、 area()方法计算图形的面积。让Rectangle类实现Comparable接口,能根据面积进行排序。
并编写相应测试类
Circle类:定义一个double类型的字段r,代表圆的半径;
Rectangle类:定义两个double类型的字段width和height,分别代表矩形的宽和高;
注意:Rectangle类,使其实现java.lang.Comparable接口,compareTo方法根据面积进行比较大小

我写

//shape类
public abstract class Shape {
    abstract Double area();
}

//Circle类
public class Circle extends Shape{
    private Double r;
    public Circle(Double radus) {
        this.r=radus;
    }
    @Override
    Double area() {
        return 3.14*this.r*this.r;
    }

}


//Rectangle 类
public class Rectangle extends Shape implements Comparable<Rectangle>{
    private Double width;
    private Double height;
    public Rectangle(Double w,Double h) {
        this.height=h;
        this.width=w;
    }
    @Override
    public Double area() {
        return this.height*this.width;
    }
    @Override
    public int compareTo(Rectangle o) {
        if(this.area()>o.area())
            return 1;
        else
            return 0;
    }
}


public class TestClass {
    public static void main(String[] args) {
        Circle c=new Circle(3.0);
        System.out.println(c.area());
        Rectangle r1=new Rectangle(2.3,4.5);
        System.out.println(r1.area());
        Rectangle r2=new Rectangle(1.4, 6.8);
        System.out.println(r2.area());
        if(r1.compareTo(r2)==1) {
            System.out.println("矩形r1的面既大");
        }else {
            System.out.println("矩形r2的面既大");
        }
    }
}

这个需求写的很清楚,难度也不高。
如果根据这个需求都写不出来代码。那你就多练习一下Java基础,这些都是很基础的。 现在工作中也都是根据需求写功能的。

建议看看书,比较基础的东西。类是什么,类的组成部分。属性是什么,属性的基础类型有哪些。方法是什么,方法的组成是那些。至于最后一个排序,题目说了实现Comparable接口。这个类应该需要重写里面的方法吧,这个重写的方法会不会是排序的规则?那我们用这两个参数o1.area - o2.area。然后将所有Rectangle对象放进List中.sort()就可以将他们按面积排序(放进Set中应该可以自动排序)。


import org.jetbrains.annotations.NotNull;

import java.util.Set;
import java.util.TreeSet;

public abstract class Shape {
    // 方法计算图形的面积
    abstract double area();


}

class Circle extends Shape {
    double r;

    public Circle(double r) {
        this.r = r;
    }

    @Override
    double area() {
        return 3.14 * r * r;
    }
}

class Rectangle extends Shape implements Comparable<Rectangle>{
    double width;
    double height;

    public static void main(String[] args) {
        Set<Rectangle> treeSet = new TreeSet<Rectangle>();
        
        Rectangle rectangle = new Rectangle(3.1, 5);
        Rectangle rectangle1 = new Rectangle(4.2, 5);
        Rectangle rectangle2 = new Rectangle(7.1, 5);
        Rectangle rectangle3 = new Rectangle(1.1, 5);

        treeSet.add(rectangle);
        treeSet.add(rectangle1);
        treeSet.add(rectangle2);
        treeSet.add(rectangle3);
        
        // 根据面积进行比较大小
        System.out.println(treeSet);
    }

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public String toString() {
        return "Rectangle area:{" + area() + "}";
    }

    @Override
    double area() {
        return width * height;
    }


    @Override
    public int compareTo(@NotNull Rectangle o) {
        return (int)o.area() - (int)area();
    }
}

我写

我写