Java的一個關於“星球”的列舉

FrankYou發表於2017-08-09
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));
        }
    }
}

 

相關文章