publicenumPlanet{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);privatefinaldoublemass;// In kilogramsprivatefinaldoubleradius;// In metersprivatefinaldoublesurfaceGravity;// In m / s^2// Universal gravitational constant in m^3 / kg s^2privatestaticfinaldoubleG=6.67300E-11;// ConstructorPlanet(doublemass,doubleradius){this.mass=mass;this.radius=radius;surfaceGravity=G*mass/(radius*radius);}publicdoublemass(){returnmass;}publicdoubleradius(){returnradius;}publicdoublesurfaceGravity(){returnsurfaceGravity;}publicdoublesurfaceWeight(doublemass){returnmass*surfaceGravity;// F = ma}}
// Takes earth-weight and prints table of weights on all planets (Page 160)publicclassWeightTable{publicstaticvoidmain(String[]args){doubleearthWeight=Double.parseDouble(args[0]);doublemass=earthWeight/Planet.EARTH.surfaceGravity();for(Planetp:Planet.values())System.out.printf("Weight on %s is %f%n",p,p.surfaceWeight(mass));}}