栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

B 关卡十典型问题难点,个人心得

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

B 关卡十典型问题难点,个人心得

5.定义一个接口用来实现两个对象的比较。
interface CompareObject{
public int compareTo(Object o); //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
}
    定义一个Circle类,声明redius属性,提供getter和setter方法
    定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
    定义一个测试类InterfaceTest,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
    思 考 : 参 照 上 述 做 法 定 义 矩 形 类 Rectangle 和 ComparableRectangle 类 , 在
ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小。

package ten1;

public interface CompareObject {
    public int compareTo(Object o);
}
package ten1;

public class Circle {
//定义radius
    private double radius;
//提供无参构造带参构造
    public Circle() {
    }

    public Circle(double radius) {
        this.radius = radius;
    }
    //提供getset方法
    public void setRadius(double radius) {
        this.radius = radius;
    }
    public double getRadius(){
        return radius;
    }
}
package ten1;

public class ComparableCircle extends Circle implements CompareObject {
    //无参构造和带参构造
    public ComparableCircle() {
    }

    public ComparableCircle(double radius) {
        super(radius);
    }
//方法重载

    @Override
    public int compareTo(Object o) {
        if(o instanceof ComparableCircle){

            if(this.getRadius()==((ComparableCircle) o).getRadius()){
                return 0;
            }else if(this.getRadius()>((ComparableCircle) o).getRadius()){
//               return (int)(this.getRadius()-((ComparableCircle) o).getRadius());
                return 1;
            }else if(this.getRadius()<(((ComparableCircle) o).getRadius())){
//                return (int)(this.getRadius()-((ComparableCircle) o).getRadius());
                return -1;
            }
        }
          return -2;
    }

}
package ten1;

import java.util.Scanner;

public class InterfaceTest {
    public static void main(String[] args) {
        System.out.println("请输入用于比较圆的第一个半径");
        Scanner sc=new Scanner(System.in);
        double radius1=sc.nextDouble();
        System.out.println("请输入用于比较圆的第二个半径");
        double radius2=sc.nextDouble();
        CompareObject m=new ComparableCircle(radius1);
        CompareObject n=new ComparableCircle(radius2);
        //用num接收其返回值
        int num=m.compareTo(n);
        //判断那个半径大
        if(num==0){
            System.out.println("两个圆的半径相等");
        }else if(num==1){
            System.out.println("第一个圆的半径大");
        }else if(num==-1){
            System.out.println("第二个圆的半径大");
        }
        System.out.println("请输入第一个矩形的长,宽");
        double a=sc.nextDouble();
        double b=sc.nextDouble();
        System.out.println("请输入第二个矩形的长,宽");
        double a1=sc.nextDouble();
        double b2=sc.nextDouble();
        //创建对象
        CompareObject c1=new ComparableRectangle();
        CompareObject c2=new ComparableRectangle();
        //接收方法
        int p=c1.compareTo(c2);
        if(p==0){
            System.out.println("矩形的两个面积相等");
        }else if(p>0){
            System.out.println("第一个矩形的面积更大一点");
        }else if(p<0){
            System.out.println("第二个矩形的面积更大一点");
        }
    }
}
package ten1;
//定义矩形类
public class Rectangle {
    //定义矩形的长
    private double a;
    private double b;
//带参无参构造
    public Rectangle(double a, double b) {
        this.a = a;
        this.b = b;
    }

    public Rectangle() {
    }
    //提供getset方法

    public double getA() {
        return a;
    }

    public void setA(double a) {
        this.a = a;
    }

    public double getB() {
        return b;
    }

    public void setB(double b) {
        this.b = b;
    }

}
package ten1;

public class ComparableRectangle extends Rectangle implements CompareObject{
    public ComparableRectangle(double a, double b) {
        super(a, b);
    }

    public ComparableRectangle() {
    }

    @Override
    public int compareTo(Object o) {
        //判断o是否属于该类
        if(o instanceof ComparableRectangle){
            if((this.getA()*this.getB())==(((ComparableRectangle) o).getA()*((ComparableRectangle) o).getB())){
                return 0;
            }else if((this.getA()*this.getB())>(((ComparableRectangle) o).getA()*((ComparableRectangle) o).getB())){
                return 1;
            }else if((this.getA()*this.getB()<(((ComparableRectangle) o).getA()*((ComparableRectangle) o).getB()))){
                return 2;
            }
        }
        return -1;
    }
}

个人心得如下:

刚做这个实验时候对这个实验的某个方法不理解,后来借助网络上现有资源的查找,发现了Object o表示了全局对象,首先得通过之前学过的instanceof进行判断,判断该对象是否属于这一类中,若属于在完成执行的下一次操作,在通过if循环里面判断两个圆的半径大小,矩形的面积便可同理得出相关结论。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号