版权声明:本文为博主原创文章,未经博主允许不得转载。
/* (程序头部注释开始)
版权声明:保留个人权利。 如程序有不当之处,敬请指正。
* 文件名称: 《一些简单的java编程题(3) ————小球落地问题》
* 作 者: 那就去巴黎
* 完成日期: 2018 年 01 月 30 日
* 版 本 号: JDK 9.0.1
问题描述:
一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下。求它在 第 n 次落地时,经过的路程?第 n 次落地后反弹多高?
题目分析:
第一次落地时,经过的路程为起始高度,之后每次加上上一次后反弹高度的两倍。
例如:第二次落地时,路程为 起始高度+第一次落地后反弹高度的两倍。
第三次落地时,路程为 起始高度+第一次落地后反弹高度的两倍+第二次落地后反弹高度的两倍。
* (程序头部的注释结束)
*/
package questions;
import java.util.Scanner; //导入java.util包中的Scanner这个工具类
public class Q3
{
public static void main(String[] args)
{
System.out.print("请输入小球第一次落地前的起始高度和落地反弹的次数:");
Scanner scan = new Scanner(System.in);
scan.useDelimiter("\\s"); // Scanner.useDelimiter 方法接受一个正则表达式。 "\\s" :正则表达式,表示以一个空白字符(A whitespace character)为分隔符。
double h = scan.nextDouble();
int n = scan.nextInt();
distance(h,n);
scan.close(); // 关闭配置内存
}
private static void distance(double h, int n)
{
double length=0;
double firstdistance=h; // 把起始高度先提取出来
for(int i=0;i<n;i++)
{
length+=2*h;
h/=2;
}
length-=firstdistance; //得到总路程
System.out.println("第"+n+"次落地时,小球共经过"+length+"米,"+"第"+n+"次落地后反弹高度为"+h+"米");
}
}
程序运行结果如下: