声明圆锥体类,实现 Area 和 Volume 接口,计算表面积和体积,按体积比较大小。如果输入的参数不符合要求(如输入的不是数字等)抛出异常。写出JAVA代码
时间: 2024-11-09 19:25:05 浏览: 34
在Java中,你可以声明一个`ConicalShape`类来实现`Area`和`Volume`接口,并提供计算表面积和体积的方法。这里是一个简单的例子:
```java
import java.util.InputMismatchException;
// 定义Area和Volume接口
interface Area {
double calculateArea();
}
interface Volume {
double calculateVolume();
}
// 圆锥体类实现Area和Volume接口
class Cone implements Area, Volume {
private double baseRadius;
private double height;
// 构造函数接受基础半径和高度作为参数
public Cone(double baseRadius, double height) {
if (!isValidInput(baseRadius, height)) {
throw new InputMismatchException("Invalid input for radius or height");
}
this.baseRadius = baseRadius;
this.height = height;
}
// 验证输入是否有效
private boolean isValidInput(double... values) {
for (double value : values) {
try {
Double.parseDouble(String.valueOf(value));
} catch (NumberFormatException e) {
return false;
}
}
return true;
}
// 实现Area接口的方法
@Override
public double calculateArea() {
return Math.PI * Math.pow(baseRadius, 2);
}
// 实现Volume接口的方法
@Override
public double calculateVolume() {
return (1.0 / 3.0) * Math.PI * Math.pow(baseRadius, 2) * height;
}
// 按体积比较大小并返回结果
public static String compareByVolume(Cone cone1, Cone cone2) {
if (cone1.calculateVolume() > cone2.calculateVolume()) {
return "cone1 is larger by volume";
} else if (cone1.calculateVolume() < cone2.calculateVolume()) {
return "cone2 is larger by volume";
} else {
return "Both cones have the same volume";
}
}
}
// 主程序示例
public class Main {
public static void main(String[] args) {
try {
Cone cone1 = new Cone(5, 7);
Cone cone2 = new Cone(3, 9);
System.out.println(compareByVolume(cone1, cone2));
} catch (InputMismatchException e) {
System.out.println(e.getMessage());
}
}
}
```
在这个代码里,`Cone`类实现了`Area`和`Volume`接口,并检查了输入的合法性。在主函数中创建两个`Cone`实例,并通过`compareByVolume`方法比较它们的体积。
阅读全文