-->
当前位置:首页 > 题库 > 正文内容

函数题:八边形Octagan类(接口)

Luz3年前 (2022-05-25)题库632
编写一个名为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程序末尾。

### 方法接口定义:
java
double getPerimeter();
double getArea();
实现Comparable接口的方法 public int compareTo(Octagon o);
实现Cloneable接口的方法 protected Object clone();


###程序框架:

程序按以下框架进行设计后提交:
java
class Octagon implements Comparable<Octagon>,Cloneable{

……

@Override
public int compareTo(Octagon o){
……
}
@Override
protected Object clone() {
return this;
}
}


### 裁判测试程序样例:
java
import java.util.Scanner;

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));
}
}

/* 请在这里填写答案 */


### 输入样例:

in
5


### 输出样例:

out
Area is 120.71
Perimeter is 40.0
Compare the methods 0







答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。