| 1 | import java.io.*;
 | 
|---|
| 2 | 
 | 
|---|
| 3 | public class testP1 {
 | 
|---|
| 4 |     public enum Planet {
 | 
|---|
| 5 |                 //          mass      radius
 | 
|---|
| 6 |                 MERCURY ( 3.303E23, 2.4397E6 ),
 | 
|---|
| 7 |                 VENUS   ( 4.869E24, 6.0518E6 ),
 | 
|---|
| 8 |                 EARTH   ( 5.976E24, 6.37814E6 ),
 | 
|---|
| 9 |                 MARS    ( 6.421E23, 3.3972E6 ),
 | 
|---|
| 10 |                 JUPITER ( 1.9E27,   7.1492E7 ),
 | 
|---|
| 11 |                 SATURN  ( 5.688E26, 6.0268E7 ),
 | 
|---|
| 12 |                 URANUS  ( 8.686E25, 2.5559E7 ),
 | 
|---|
| 13 |                 NEPTUNE ( 1.024E26, 2.4746E7 );
 | 
|---|
| 14 | 
 | 
|---|
| 15 |                 private final double mass;   // in kilograms
 | 
|---|
| 16 |                 private final double radius; // in meters
 | 
|---|
| 17 | 
 | 
|---|
| 18 |                 Planet( double mass, double radius ) {
 | 
|---|
| 19 |                         this.mass = mass;
 | 
|---|
| 20 |                         this.radius = radius;
 | 
|---|
| 21 |                 }
 | 
|---|
| 22 |                 private double mass() { return mass; }
 | 
|---|
| 23 |                 private double radius() { return radius; }
 | 
|---|
| 24 | 
 | 
|---|
| 25 |                 // universal gravitational constant  (m3 kg-1 s-2)
 | 
|---|
| 26 |                 public static final double G = 6.67300E-11;
 | 
|---|
| 27 | 
 | 
|---|
| 28 |                 double surfaceGravity() {
 | 
|---|
| 29 |                         return G * mass / ( radius * radius );
 | 
|---|
| 30 |                 }
 | 
|---|
| 31 |                 double surfaceWeight( double otherMass ) {
 | 
|---|
| 32 |                         return otherMass * surfaceGravity();
 | 
|---|
| 33 |                 }
 | 
|---|
| 34 |     }
 | 
|---|
| 35 |     public static void main( String[] args ) {
 | 
|---|
| 36 |                 if ( args.length != 1 ) {
 | 
|---|
| 37 |                         System.err.println( "Usage: java Planet <earth_weight>" );
 | 
|---|
| 38 |                         System.exit( -1 );
 | 
|---|
| 39 |                 }
 | 
|---|
| 40 |                 double earthWeight = Double.parseDouble( args[0] );
 | 
|---|
| 41 |                 double mass = earthWeight / Planet.EARTH.surfaceGravity();
 | 
|---|
| 42 |                 for ( Planet p : Planet.values() )
 | 
|---|
| 43 |                         System.out.printf( "Your weight on %s is %f%n", p, p.surfaceWeight( mass ) );
 | 
|---|
| 44 |     }
 | 
|---|
| 45 | }
 | 
|---|
| 46 | 
 | 
|---|
| 47 | // java test
 | 
|---|