使用枚举进行编程
我正在尝试 Java 教程中的一个示例程序,使用枚举。我无法获得代码的正确输出。我认为问题出在我对代码的理解上。任何人都可以帮助我正确解释它。我理解了大部分代码,但想确认使用程序中的以下代码:
if (args.length != 1)
{
System.err.println("Usage: java Planet <earth_weight>");
System.exit(-1);
}
我的输出是:
Usage: java Planet <earth_weight>
以下是我的代码:
public enum EnumPlanet {
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);
private final double mass; // in kilograms
private final double radius; // in meters
EnumPlanet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
private double mass() { return mass; }
private double radius() { return radius; }
// universal gravitational constant (m3 kg-1 s-2)
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) {
if (args.length != 1) {
System.err.println("Usage: java Planet <earth_weight>");
System.exit(-1);
}
double earthWeight = Double.parseDouble(args[0]);
double mass = earthWeight/EARTH.surfaceGravity();
for (EnumPlanet p : EnumPlanet.values())
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));
}
}
I was trying out a sample program from Java tutorials,using enum. I was not able to get a correct output for the code.I think the problem is with my understanding of the code.Can anyone please help me to interpret it correctly.I understood most of the code,but would like to confirm the use of following piece of code in the program :
if (args.length != 1)
{
System.err.println("Usage: java Planet <earth_weight>");
System.exit(-1);
}
My output is :
Usage: java Planet <earth_weight>
Following is my code:
public enum EnumPlanet {
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);
private final double mass; // in kilograms
private final double radius; // in meters
EnumPlanet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
private double mass() { return mass; }
private double radius() { return radius; }
// universal gravitational constant (m3 kg-1 s-2)
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) {
if (args.length != 1) {
System.err.println("Usage: java Planet <earth_weight>");
System.exit(-1);
}
double earthWeight = Double.parseDouble(args[0]);
double mass = earthWeight/EARTH.surfaceGravity();
for (EnumPlanet p : EnumPlanet.values())
System.out.printf("Your weight on %s is %f%n",
p, p.surfaceWeight(mass));
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您得到此输出是因为您没有提供正确数量的参数。
尝试
You get this output because you are not supplying the right amount of arguments.
try
你需要提供一个论据来说明地球上的重量。假设这是 71.5 公斤。然后你需要运行该程序
You need to supply an argument saying the weight on earth. Suppose this was 71.5 kg. Then you need to run the program with
您需要在程序命令行中给出您的体重(以千克为单位)。例如:
java.exe Planet 75
(假设您的体重为 75 公斤)。输出将是根据其他行星的引力,您在其他行星上的重量。You need to give your weight in kilograms in the program command line. eg:
java.exe Planet 75
(assuming you weight 75 kilograms). The output will be how much you would weight on other planets according to their gravity.你需要提供一个论据,即你在地球上的重量。
否则,您有多个不同于 1 的参数,并且您的程序会输出帮助。
You need to provide an argument, which is your weight on earth.
Else, you have a number of argument different from 1 and your program outputs the help.