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

函数题:圆形类

Luz2年前 (2022-11-10)题库608
构造一个抽象类Shape表示形状类 ,该类实现了Comparable<Shape>接口 。
* 该类有公共一个的抽象方法getArea(),不带参数,返回类型为双精度浮点数。
* 该类有一个公共的方法int compareTo(Shape shape),如果当前形状对象的面积大于参数shape的面积,返回1;如果当前形状对象的面积小于参数shape的面积,返回-1;否则返回0。
* 该类有一个公共的静态方法Shape max(Shape s1, Shape s2),调用compareTo(Shape shape)方法比较两个形状对象s1和s2的大小,如果s1大于等于s2,返回s1;否则,返回s2。

构造一个Circle表示形状 ,该类继承了Shape类 。
* 该类有一个私有的双精度成员变量radius,radius必须大于0;
* 该类有一个无参数的构造方法,将radius初始化为1.0。
* 该类有一个带一个double型参数的构造方法,用参数的值初始化radius。
* 该类有一个公共方法getRadius(),返回raduis的值。
* 该类有一个公共方法setRadius(double radius),当参数radius大于0时,将参数的值赋值给成员变量radius;否则抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"圆的半径必须大于0"。
* 该类有一个公共方法getArea(),返回圆形的面积。
* 该类有一个公共方法toString(),根据圆形的数据生成并返回一个字符串(具体要求看输出样例)。

从键盘输入两个浮点数作为半径创建两个圆形对象,如果两个圆形对象的半径都是合法的,比较并输出两个圆形中最大的那个;否则输出捕捉到的异常对象中的消息。

### 裁判测试程序样例:
c++
/* 请在这里填写答案 */

public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
try {
Shape c1 = new Circle(scanner.nextDouble());
Shape c2 = new Circle(scanner.nextDouble());
System.out.printf("The max Circle of " + c1 + " and " + c2 + " is " + Shape.max(c1, c2));
} catch (IllegalArgumentException e){
System.out.println(e.getMessage());
}
}
}


### 输入样例1:

in
1.1 2.3


### 输出样例1:

out
The max Circle of Circle(1.1) and Circle(2.3) is Circle(2.3)


### 输入样例2:

in
-1 2.1


### 输出样例2:

out
圆的半径必须大于0







答案:若无答案欢迎评论

发表评论

访客

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