使用Java枚举类型计算你在行星上的万有引力,本人初学者请各位指点。
import java.util.Scanner;public enum Planet {  // 行星
MERCURY("水星",3.303e+23, 2.4397e6),  // 水星(行星质量,行星半径,下同)
VENUS("金星",4.869e+24, 6.0518e6),  // 金星
EARTH("地球",5.976e+24, 6.37814e6), // 地球
MARS("火星",6.421e+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); // 海王星
/* 特别声明:为什么只有八大行星?!
 * 国际天文学联合会大会2006年8月24日投票决定,不再将传统太阳系九大行星之一的冥王星(Pluto)视为行星,
 * 而将其列入“矮行星”。大会通过的决议规定 ,“行星”指的是围绕太阳运转、自身引力足以克服其刚体力而使天体
 * 呈圆球状、能够清除其轨道附近其他物体的天体。在太阳系传统的“九大行星”中,只有水星、金星、地球、火星、
 * 木星、土星、天王星和海王星符合这些要求。冥王星由于其轨道与海王星的轨道相交,不符合新的行星定义,因此被
 * 自动降级为“矮行星”。
 */ private final String planetChineseName; //行星中文名字
private final double planetMass;  //行星质量,以千克计
private final double planetRadius;  //行星半径,以米计 Planet(String planetChineseName,double planetMass, double planetRadius) {
this.planetChineseName = planetChineseName;
this.planetMass = planetMass;
this.planetRadius = planetRadius;
} // 万有引力常量universal gravitational constant (m3 kg-1 s-2)
public static final double G = 6.67300E-11; /*
 * 在中国大陆,重力的确切定义是:在地面或地面附近物体受到地球吸引的万有引力和随地球自转所需的向心力相减的合力。
 * 这里取国外万有引力近似重力的解法。
 */
// 计算行星表面的重力加速度
double planetSurfaceGravity() { 
return G * planetMass / (planetRadius * planetRadius);
}

// 计算人在行星表面的重量(近似为万有引力)
double planetSurfaceWeight(double humanMass) {
return humanMass * planetSurfaceGravity();
} public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的质量,以千克计:");
double humanMass = scanner.nextDouble(); for (Planet p : Planet.values())
System.out.printf("您在行星%s上的体重是 %.2f牛顿。%n", p.planetChineseName, p
.planetSurfaceWeight(humanMass));
}
}
*************************************************************
输出结果:
请输入您的质量,以千克计:
75
您在行星水星上的体重是 277.73牛顿。
您在行星金星上的体重是 665.35牛顿。
您在行星地球上的体重是 735.20牛顿。
您在行星火星上的体重是 278.45牛顿。
您在行星木星上的体重是 1860.46牛顿。
您在行星土星上的体重是 783.73牛顿。
您在行星天王星上的体重是 665.45牛顿。
您在行星海王星上的体重是 836.90牛顿。*************************************************************
请你也试一试!

解决方案 »

  1.   

    为啥我感觉像javadoc的示例呢?
      

  2.   

    不错,以上示例改编自Sun官方文档《Java Tutorial》,整个示例都有改变,觉得原文档很多地方指代不明,如质量mass, anotherMass不知是指行星还是人的质量。其源文件Main方法要求输入人的重量,而不是质量,与我们中国大多数人的习惯不同。昨天刚学枚举类型,我觉得要学以致用,要表达清晰,要让每个人都看得懂。