八边形Octagan类(接口) (5 分)

题目描述:

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

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

请实现Octagon类,其实现了Comparable<Octagon>和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程序末尾。

程序框架: 

程序按以下框架进行设计后提交:
class Octagon implements Comparable<Octagon>,Cloneable{
    
    ……
    
    @Override
    public int compareTo(Octagon o){
           ……
    }
    @Override
    protected Object clone() {
        return this;
    }
}

 裁判测试程序样例:

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.Scanner;
 
public class Main {
    public static void main(String[] args) {
        @SuppressWarnings("resource")
		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));
    }
}
/* 请在这里填写答案 */

@SuppressWarnings("hiding")
//程序按以下框架进行设计后提交:

interface Comparable<Octagon>
{
	int compareTo(Octagon o);
}
interface Cloneable
{
	Object clone();
}

class Octagon implements Comparable<Octagon>,Cloneable{
  
 // ……
	private double side;
	public Octagon(double side)
	{
		this.setSide(side);
	}
	public void setSide(double side)
	{
		this.side=side;
	}
	public double getSide()
	{
		return this.side;
	}
  public double getPerimeter()
  {
  	return this.getSide()*8;
  }
  public double getArea()
  {
  	return (2 + 4 / Math.sqrt(2)) * this.getSide() * this.getSide();
  }
	
  @Override
  public int compareTo(Octagon o){
        // ……
  	
  		if(this.getSide()>o.getSide())
  			return 1;
  		else if(this.getSide()<o.getSide())
  			return -1;
  		else if(this.getSide()==o.getSide())
  			return 0;
			return 0;
  	
  }
  @Override
	public Object clone() {
  	
      return new Octagon(side);
  }
}

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值