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