20240510 Java期末头歌复习1 第一章 Java 主方法中的顺序结构 05
练习-Java顺序结构之无输入求平抛小球与抛出点之间的距离
练习-Java顺序结构之无输入求平抛小球与抛出点之间的距离
1. 任务要求
- [任务描述]
- [编程要求]
- [测试说明]
任务描述
物体以一定的初速度水平方向抛出,如果物体仅受重力作用,这样的运动叫做平抛运动。平抛运动可看作水平方向的匀速直线运动以及竖直方向的自由落体运动的合运动。如图 1 所示。
图 1
假设v0表示水平抛出的初速度,t表示水平抛出后,小球飞行的时间,g表示重力加速度。
平抛运动经过 t 秒的水平位移s计算公式为: s=v0t
垂直方向位移h的计算公式为: h=2g**t2
那么经过t秒后,小球与抛出点距离d的计算公式为: d=s2+h2
本关任务:一小球以 10 米/秒的水平速度平抛,重力加速度取 9.8 米/秒2,在忽略空气阻力的情况下,求经过时间 3 秒后,小球所在位置与抛出点之间的距离 (假设小球距地面足够高)。
输出格式:小球所在位置与抛出点之间的距离为 xxx 米。
其中 xxx 为求出的距离。
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
小提示:
Java 的 Math 类提供了幂运算和开平方两种方法,可以帮我们解决本关的一些问题,在这里简单介绍一下,在后面的实训中我们会详细为大家介绍 Math 类的使用。
如何求取23 和 0.53?
例子:
// Math.pow(x, y) Java 的幂运算,意思为求x的y次方,x和y可以是整型也可以是浮点型,该方法返回一个浮点型的值
double a = Math.pow(2, 3);// 求2的3次方,并将其赋值给一个double型的变量aSystem.out.print(a);
执行结果:8.0
如何求取4?
例子:
// Math.sqrt(x) Java 开平方的方法,意思为求x的平方根,x可以是整型也可以是浮点型,该方法返回一个浮点型的值
double a = Math.sqrt(4);
// 求4的平方根,并将其赋值给一个double型的变量a
System.out.print(a);
执行结果:2.0
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
/**
* 任务:一小球以 10米/秒 的水平速度平抛,重力加速度取9.8米/秒2,
* 在忽略空气阻力的情况下,求经过时间 3 秒后,
* 小球所在位置与抛出点之间的距离 (假设小球距地面足够高)。
* 类名为:Distance
*/
public class Distance {
public static void main(String[] args) {
double g = 9.8; // 声明浮点型变量 g,用于表示重力加速度
int v0 = 10; // 声明整型变量 v0, 用于表示水平初速度
int t = 3; // 声明整型变量 t, 用于表示小球飞行的时间
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 第一步:计算水平距离,并赋值给s
// 第二步:计算垂直距离,并赋值给h
// 第三步:计算小球与原点的距离,并赋值给d,Math.sqrt()表示的是对括号里的值求平方根
// 第四步:打印出小球与原点的距离d 输出格式:小球所在位置与抛出点之间的距离为 xxx 米。 其中 xxx 为求出的距离
/********** End **********/
}
}
开始你的任务吧,祝你成功!
2. 任务分析
1. 输入输出分析
输入: 无
输出:打印出小球与原点的距离 d,输出格式:小球所在位置与抛出点之间的距离为 xxx 米。
2.需求分析
计算小球所在位置与抛出点之间的距离 (假设小球距地面足够高)。
- 一小球以 v0 米/秒 的水平速度平抛,重力加速度取9.8米/秒
3. 所需知识
- 计算, 分两个,也没啥好说的
- 最后算的时候要调用math.sqrt 来计算垂直和水平的平方和根号
4. 确认代码框架
// 第一步:计算水平距离,并赋值给s
//水平距离horizontal distance
public static double Horizontaldistance(double v0,double t){
double s = v * t;
return s;
}
// 第二步:计算垂直距离,并赋值给h
//垂直距离vertical distance
public static double Verticaldistance(double g,double t){
double h = 0.5*g*t*t;
return h;
}
// 第三步:计算小球与原点的距离,并赋值给d,Math.sqrt()表示的是对括号里的值求平方根
public static double Absolutedistance(double h,double s ){
double d = Math.sqrt(h*h + s*s);
return d;
}
// 第四步:打印出小球与原点的距离d 输出格式:小球所在位置与抛出点之间的距离为 xxx 米。 其中 xxx 为求出的距离
public static void num_to_str(double num){
DecimalFormat df = new DecimalFormat("#.##");
df.setMinimumFractionDigits(2);//设置最小的小数位数为2
String output = df.format(num);
System.out.printf(output);
}
5. 书写代码
import java.util.*;
import java.text.DecimalFormat;
import java.lang.*;
public class Distance{
public static void main(String[] args){
double g = 9.8;
double v0 = 10;
double t = 3;
double h = Vertialdistance(g,t);
double s = Horizontaldistance(v0,t);
double d = Absolutedistance(h,s);
num_to_str(d);
}
public static double Horizontaldistance(double v,double t){
double s = v * t;
return s;
}
public static double Vertialdistance(double g,double t){
double h = 0.5*g*t*t;
return h;
}
public static double Absolutedistance(double h,double s){
double d = Math.sqrt(h*h + s*s);
return d;
}
public static void num_to_str(double num){
DecimalFormat df = new DecimalFormat("#,##");
df.setMinimumFractionDigits(13);
String output = df.format(num);
System.out.print("小球所在位置与抛出点之间的距离为 " + output + " 米。");
}
}
3. 代码
最终代码
import java.util.*;
import java.text.DecimalFormat;
import java.lang.*;
public class Distance{
public static void main(String[] args){
double g = 9.8;
double v0 = 10;
double t = 3;
double h = Vertialdistance(g,t);
double s = Horizontaldistance(v0,t);
double d = Absolutedistance(h,s);
num_to_str(d);
}
public static double Horizontaldistance(double v,double t){
double s = v * t;
return s;
}
public static double Vertialdistance(double g,double t){
double h = 0.5*g*t*t;
return h;
}
public static double Absolutedistance(double h,double s){
double d = Math.sqrt(h*h + s*s);
return d;
}
public static void num_to_str(double num){
DecimalFormat df = new DecimalFormat("#,#############");
df.setMinimumFractionDigits(13);
String output = df.format(num);
System.out.print("小球所在位置与抛出点之间的距离为 " + output + " 米。");
}
}
之前的代码
public class Distance {
public static void main(String[] args) {
double g = 9.8; // 声明浮点型变量 g,用于表示重力加速度
int v0 = 10; // 声明整型变量 v0,用于表示水平初速度
int t = 3; // 声明整型变量 t,用于表示小球飞行的时间
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 第一步:计算水平距离,并赋值给 s
double s = v0 * t;
// 第二步:计算垂直距离,并赋值给 h
double h = 0.5 * g * t * t;
// 第三步:计算小球与原点的距离,并赋值给 d,Math.sqrt()表示的是对括号里的值求平方根
double d = Math.sqrt(s * s + h * h);
// 第四步:打印出小球与原点的距离 d,输出格式:小球所在位置与抛出点之间的距离为 xxx 米。
System.out.println("小球所在位置与抛出点之间的距离为 " + d + " 米。");
/********** End **********/
}
}