Java的一个关于“星球”的枚举

时间:2023-03-09 08:10:49
Java的一个关于“星球”的枚举
public enum Planet {
/**
* 水星
*/
MERCURY(3.302e+23, 2.439e6), /**
* 金星
*/
VENUS(4.869e+24, 6.052e6), /**
* 地球
*/
EARTH(5.975e+24, 6.378e6), /**
* 火星
*/
MARS(6.419e+23, 3.393e6), /**
* 木星
*/
JUPITER(1.899e+27, 7.149e7), /**
* 土星
*/
SATURN(5.685e+26, 6.027e7), /**
* 天王星
*/
URANUS(8.683e+25, 2.556e7), /**
* 海王星
*/
NEPTUNE(1.024e+26, 2.477e7); private final double mass;
private final double radius;
private final double surfaceGravity;
private static final double G = 6.67300E-11; /**
* 构造函数
*
* @param mass 行星的质量
* @param radius 行星的半径
*/
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
this.surfaceGravity = G * mass / (radius * radius);
} /**
* 星球的质量
* @return 质量 kg
*/
public double mass() {
return mass;
} /**
* 星球的半径
* @return 半径 m
*/
public double radius() {
return radius;
} /**
* 获取某个星球表面的重力(地心引力或万有引力)
* @return 某个星球表面的重力
*/
public double surfaceGravity() {
return surfaceGravity;
} /**
* 获取某个星球表面的重量
* @param mass 物体质量
* @return 星球表面的重量
*/
public double surfaceWeight(double mass) {
return mass * surfaceGravity;
}
}

我们来看看我们地球上某个物体的重量在其它行星上都是什么重量?

public class WeightTable {
public static void main(String[] args) {
double earthWeight = Double.parseDouble("130");
double mass = earthWeight / Planet.EARTH.surfaceGravity();
System.out.println("Mass is :" + mass);
for (Planet p : Planet.values()) {
System.out.printf("Weight on %s is %f%n", p, p.surfaceWeight(mass));
}
}
}