球的最大高度的计算(级别:新手)

时间:2015-04-21 19:17:00

标签: java constructor parameter-passing

我决定学习一些Java。因此,我一直在网上搜索一些练习。现在我被困住了,非常感谢你的帮助。

我想计算一直从地面投掷的球的最大高度。因此我正在使用height = 0. 5 * speed * speed (in metres per second) / 9.81 (in metres per second²)

我的班级'Ball'

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.我何时何地使用kmHToMs?我的意思是,我必须在某处使用它来计算某人进入时的最大高度,例如在命令行中速度为5 kmh。

我想写另一个班'Balltester'。在这里,我想测试命令行的输入。我要检查数字> 0.如果输入为空或者加上一个或多个字母,我想退出该程序。我在这里想念一下吗?由于我不知道如何开始,所以测试人员课程尚未成熟。

我尝试将构造函数与public static void main(String[] args) {}一起使用,但是所有我通过输入5 kmh获得的速度都是Ball @ 659e0bfd。所以我想我必须以某种方式转换速度参数并且2.将“Balltester”类中的commando-line参数传递给构造函数Ball。

我感谢任何帮助和反馈。提前谢谢。

EDIT     公共类BallTester {

    public static void main(String[] args) {
        ball(new Ball(5));
    }
         private static void ball(Ball b) {
             b.maxHeight();
                System.out.println(b);

    }

}

1 个答案:

答案 0 :(得分:1)

首先,你不是要为球分配速度。您需要在构造函数中执行此操作:

public Ball(float speedInKmh) {
    this.speed = kmhToMs(speedInKmh);
}

请注意,您需要使用kmhToMs(speedInKmh),因为speedInKmh以公里/小时为单位,您希望speed以米/小时为单位。

其次,在ball课程的BallTester方法中,您打印的是球,而不是最大高度。您需要将方法更改为:

private static void ball(Ball b) {
    System.out.println(b.maxHeight());
}

对于您的考试班,我认为这就是您想要的:

public class BallTester {
    public static void main(String[] args)
    {        
        int speed;
        Scanner scanner = new Scanner(System.in);
        string s = scanner.next();
        try {            
            speed = Integer.parseInt(s);
            if (speed > 0) {
                ball(new Ball(5));
            }            
        }
        catch (NumberFormatException ex) {
             System.out.println("This is not a valid speed.");
        }
    }
}