版權聲明:本文爲博主原創文章,未經博主允許不得轉載。
/* (程序頭部註釋開始)
版權聲明:保留個人權利。 如程序有不當之處,敬請指正。
* 文件名稱: 《一些簡單的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+"米");
}
}
程序運行結果如下: