八边形Octagan类(接口)

八边形Octagan类(接口)

题目描述
编写一个名为Octagon的类,表示八边形。假设八边形八条边的边长都相等。它的面积可以使用下面的公式计算:

     面积 = (2 + 4 / sqrt(2)) * 边长 * 边长

请实现Octagon类,其实现了Comparable和Cloneable接口。
1 有一个私有变量double side ,表示八边形的边长。
2 构造函数Octagon(double side),初始化side。
3 为side添加getter和setter方法。
4 double getPerimeter()方法,计算周长。
5 double getArea()方法,计算面积。
6 实现Comparable接口的方法 public int compareTo(Octagon o);
如果当前对象的边长比参数o的边长大,返回1,小则返回-1,相等返回0。
7 实现Cloneable接口的方法 protected Object clone()
编写一个测试程序,根据用户输入的浮点数作为边长,创建一个Octagon对象,然后显示它的面积和周长。使用clone方法创建一个新对象,并使用CompareTo方法比较这两个对象。
使用Java完成该题的同学注意,此题提交时将会附加下述代码到被提交的Java程序末尾。

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Octagon a1 = new Octagon(input.nextDouble());
        System.out.printf("Area is %.2f\n", a1.getArea());
        System.out.println("Perimeter is " + a1.getPerimeter());
        Octagon a2 = (Octagon) a1.clone();
        System.out.println("Compare the methods " + a1.compareTo(a2));
    }
}

**样例输入 **

5

**样例输出 **

Area is 120.71
Perimeter is 40.0
Compare the methods 0

代码:

import java.util.*;
interface Comparable{
    int compareTo(Octagon o);
}
class Octagon implements Comparable{
    double side;
    public int compareTo(Octagon o) {
        if(getArea()>((Octagon)o).getArea())
            return 1;
        else if (getArea()<((Octagon)o).getArea())
            return -1;
        else
            return 0;
    }
    public Octagon(double side){
        this.side=side;
    }
    public double getPerimeter() {
        return 8*side;
    }
    public double getArea() {
        return ((2+4/Math.sqrt(2))*side*side);
    }
    protected Object clone() {
        return new Octagon(side);
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Octagon a1 = new Octagon(input.nextDouble());
        System.out.printf("Area is %.2f\n", a1.getArea());
        System.out.println("Perimeter is " + a1.getPerimeter());
        Octagon a2 = (Octagon) a1.clone();
        System.out.println("Compare the methods " + a1.compareTo(a2));
    }
}
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值