public enum Planet {
  MERCURY (3.303e+23,2.4397e6),
  VENUS (4.869e+24,6.0518e6),
  EARTH (5.976+24,6.37814e6),
  MARS (6.421+23, 3.3972e6),
  JUPITER(1.9e+27,7.1492e7),
  SATURN (5.688e+26, 6.0268e7),
  URANUS (8.686e+25, 2.5559e7), 
  NEPTUNE(1.024e+26,2.4746e7),
  PLUTO  (1.27e+22, 1.137e6);
  
  private final double mass;
  private final double radius;
  Planet (double mass, double radius){
    this.mass=mass;
    this.radius=radius;
    }
  private double mass(){ return mass;}
  private double radius(){ return radius;}
  public static final double G=6.67300E-11;
  double surfaceGravity(){
    return G*mass/(radius*radius);
    }
  double surfaceWeight(double otherMass){
    return otherMass*surfaceGravity();
    }
  public static void main(String []args){
    double earthWeight =Double.parseDouble(args[0]);
    double mass =earthWeight/EARTH.surfaceGravity();
    for(Planet p:Planet.values())
    System.out.printf("your weight on %s is %f%n",p,p.surfaceWeight(mass));
    }
  }上面代码中:double earthWeight =Double.parseDouble(args[0]);和for(Planet p:Planet.values())是什么意思?Double.parseDouble(args[0]);在前面没有定义过,怎么会有呢,代表什么意思?

解决方案 »

  1.   

    这个是输入的参数的
    public static void main(String []args)
    就是这里来的,呵呵,
    Double.parseDouble(args[0]);
    将arg[0]转为double型
      

  2.   

    args[0]是形参的第一个参数,Double.parseDouble(args[0]);是将String转Double。
    for(Planet p:Planet.values())是遍历Planet.values的所有成员。
      

  3.   

    强烈建议楼主看下 double 包装类Double里面的方法!Double.parseDouble(args[0]); 这个是把你控制台输入进来的第一个字符串 转成double基本类型!for(Planet p:Planet.values()):jdk1.5的for/in语句 强烈建议类型lz 看下。