首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

java自由落体,该如何处理

2012-12-25 
java自由落体一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过

java自由落体
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数
样例输入1000 5
样例输出31.25 2875.00
import java.util.Scanner;
public class aaa { 
 public static void main(String[] args) {
  Scanner rd=new Scanner(System.in);
  double m;
  int n;
  m=rd.nextInt();
  n=rd.nextInt();
  double h=1000;  for(int i=0;i<n;i++){
   m=m/2;
   h=h+2*m;
   
  }
 
  
          System.out.printf("%.2f",m);
          System.out.printf(" "+"%.2f",h);
 }}
我输出的结果1000 5
31.25 2937.50怎么改?
[解决办法]
哦,看错条件是“落地时”不是“弹起后”,那么不只是循环有误,完整修改如下:
m=rd.nextInt();
n=rd.nextInt();
double h = 0; // 从0开始
for (int i = 0; i < n - 1; i++) { // 最后一次没弹起所以不能用循环来算,要提前一次结束掉
            h += m;
            m /= 2;
            h += m;
}
h += m; // 算最后一次落地
System.out.printf("%.2f",m);
System.out.printf(" "+"%.2f",h);

热点排行