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

 

posted @ 2017-08-09 09:51  FrankYou  阅读(353)  评论(0编辑  收藏  举报