【发布时间】:2015-04-21 19:16:59
【问题描述】:
我决定学习一些 Java。因此,我一直在网上搜索一些练习。现在我被困住了,非常感谢你的帮助。
我想计算我从地面扔出的球的最大高度。因此我使用height = 0. 5 * speed * speed (in metres per second) / 9.81 (in metres per second²)。
我的班级“球”
public class Ball {
// Attributes
private static final double GRAVITATION = 9.81;
private static final double SECONDS_OF_HOUR = 3600.0;
private static final double METERS_OF_KILOMETER = 1000.0;
/**Speed of the ball in meters per second. */
private float speed;
// Constructor
public Ball(float speedInKmh) {
}
// Methods
/**
* @return maximal height in metres.
*/
public double maxHeight() {
return 0.5 * speed * speed / GRAVITATION;
}
/**
* @param kmh speed in kilometres / hour
* @return speed in meters / second
*/
private double kmHToMs(double kmh) {
return kmh * METERS_OF_KILOMETER / SECONDS_OF_HOUR;
}
}
我的问题: 1. 我将在何时何地使用 kmHToM?我的意思是,我必须在某个地方使用它来计算有人进入时的最大高度,例如命令行中的速度为 5 kmh。
我想写另一个类'Balltester'。这里我想测试一下命令行的输入。我要检查数字 > 0。如果输入为空或包含一个或多个字母,我想退出程序。我在这里想念什么吗?测试器类还没有编写,因为我不知道如何开始。
我尝试将构造函数与public static void main(String[] args) {} 一起使用,但通过输入 5 kmh 的速度得到的只是 Ball@659e0bfd。所以我想我必须 1. 以某种方式转换速度参数 2. 将类“Balltester”中的命令行参数传递给构造函数 Ball。
感谢任何帮助和反馈。提前谢谢你。
编辑 公共类 BallTester {
public static void main(String[] args) {
ball(new Ball(5));
}
private static void ball(Ball b) {
b.maxHeight();
System.out.println(b);
}
}
【问题讨论】:
-
到目前为止你的
main方法是什么? -
您是否注意到您的构造函数实际上并没有对其参数做任何事情?另外,您是否注意到在
speed字段中没有设置值?这两个事实是相互关联的。另外,不要尝试打印球。只需打印方法调用的结果... -
@RealSkeptic - 这是我的问题。所以我将 speedInKmh 分配给速度。感谢您提供不打印球的提示。
-
但是如果你直接赋值,那么你的公式会返回正确的值吗?试一试,看看你会得到什么结果。
-
嗯,我应该以速度 = 5kmh 得到的结果应该是大约 1,27m。我得到 0.0。顺便说一句,我没有离开——只是想弄清楚。
标签: java constructor parameter-passing