用Java编写一个程序,Jdk1.8的开发环境: 设计一个圆类Circle,该类存在于mycircle包中,它具有以下的属性和方法: 私有属性:圆半径r,圆心坐标x和y, 方法:设置和获取所有私有属性r,x,y的方法,方法名自定;计算圆周长的方法perimeter();计算圆面积的方法area(), 要求直接使用Math类中的PI; 设计一个圆柱体类Cylinder,该类存在于mycylinder包中,Cylinder继承Circle,它增加了以下属性和方法: 私有属性:高度h, 方法:设置和获取私有属性h的方法,方法名自定;计算表面积的方法area();计算体积的方法volume(); 编写一个Java Application程序Compute.java,用来显示某一个圆柱体中心坐标位置,高度h,以及它的表面积(不包括两个底的面积)、体积和底面积。要求圆半径r,圆心坐标x和y,以及高度h的值均从命令行输入。 提示及注意: 圆柱体的体积=底面积*高; 圆柱体的表面积=底面周长*高; 每一个圆柱体的生成,都是在原有的圆的基础上,添加高度生成的。 设计一个测试类Computer,该类能够处理程序中可能出现的所有的异常 ,并有相应的提示信息。如命令行没有输入,则程序会向控制台输出“命令行没有输入,请输入正确的数值”这样的提示信息; 当输入半径(r)3、圆心(x)5、圆心(y)6,高度(h)7时,显示结果为“柱体的中心坐标位置为(5,6,3),高度为7 面积为197.92033717615698,体积为131.94689145077132,底面积为28.274333882308138”。
时间: 2024-02-13 10:05:24 浏览: 106
以下是对应的实现代码:
在mycircle包中,Circle类的代码如下:
```
package mycircle;
public class Circle {
private double r;
private double x;
private double y;
public Circle(double r, double x, double y) {
this.r = r;
this.x = x;
this.y = y;
}
public void setR(double r) {
this.r = r;
}
public double getR() {
return r;
}
public void setX(double x) {
this.x = x;
}
public double getX() {
return x;
}
public void setY(double y) {
this.y = y;
}
public double getY() {
return y;
}
public double perimeter() {
return 2 * Math.PI * r;
}
public double area() {
return Math.PI * r * r;
}
}
```
在mycylinder包中,Cylinder类的代码如下:
```
package mycylinder;
import mycircle.Circle;
public class Cylinder extends Circle {
private double h;
public Cylinder(double r, double x, double y, double h) {
super(r, x, y);
this.h = h;
}
public void setH(double h) {
this.h = h;
}
public double getH() {
return h;
}
public double area() {
return super.perimeter() * h;
}
public double volume() {
return super.area() * h;
}
public double bottomArea() {
return super.area();
}
}
```
在Compute类中,实现了对命令行输入的解析和异常处理,以及对圆柱体的计算和输出。代码如下:
```
import mycylinder.Cylinder;
public class Compute {
public static void main(String[] args) {
try {
double r = Double.parseDouble(args[0]);
double x = Double.parseDouble(args[1]);
double y = Double.parseDouble(args[2]);
double h = Double.parseDouble(args[3]);
Cylinder cylinder = new Cylinder(r, x, y, h);
double centerX = cylinder.getX();
double centerY = cylinder.getY();
double centerZ = h / 2;
System.out.println("柱体的中心坐标位置为(" + centerX + "," + centerY + "," + centerZ + "),高度为" + h);
System.out.println("面积为" + cylinder.area() + ",体积为" + cylinder.volume() + ",底面积为" + cylinder.bottomArea());
} catch (NumberFormatException e) {
System.out.println("请输入正确的数值");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("命令行没有输入,请输入正确的数值");
}
}
}
```
在测试类Computer中,处理了可能出现的NumberFormatException和ArrayIndexOutOfBoundsException异常。如果命令行没有输入参数,则会输出“命令行没有输入,请输入正确的数值”的提示信息。如果输入的参数不是数字,则会输出“请输入正确的数值”的提示信息。
阅读全文