A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangyuyus 中级黑马   /  2013-11-5 21:44  /  941 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一球从100米高度自由落下,每次落地后又反跳回原高度的一半;再落下,求它第10次落地时共经过多少米.第十次反弹多高...public static void main(String args[]){      
        double a =100;   
        double b =a/2;   
        int i =0;   
        for (i =2;i<=10;i++){   
                a = a+b*2;   
                b = b/2;   
        }System.out.println("第"+i+"次落地经过时"+"共"+a+"米");           
         System.out.println("第"+i+"次落地时"+"共反弹"+b+"米");
}

请问一下 为什么i=2?我没有看懂..我算出来的结果是第11次经过和弹起 可是我算的是第10次啊 怎么搞的但是 答案还对 我有点迷糊了..还有a=a+b*2也不怎么懂..希望明白人 帮小弟详细讲解一下


评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
第一次落地:100米
第二次落地:升50米,降50米
第三次落地:升25米,降25米
a是经过的距离,b是下一次反跳的高度
第一次落地:a=100,b=a/2=50
for循环是说第i次落地时(i从2到10),求出a和b的值
第2次落地:
一升一降的距离正好是b*2=50*2=100,加上之前跑过的距离a=100,所以 a = a+b*2=200,下一次反跳的高度是这次的一半25=b/2,所以b=b/2

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
请看我的注解:
  1. package com.itheima.test;

  2. //一球从100米高度自由落下,每次落地后又反跳回原高度的一半;再落下,求它第10次落地时共经过多少米.
  3. //第十次反弹多高...
  4. class Test {
  5.         public static void main(String args[]) {
  6.                
  7.                 //定义开始时是从100米处落下,相当于第一次落地,经过的路程是100米
  8.                 double a = 100;
  9.                
  10.                 //定义第一次落地后会反弹至多高,也就是第二次下落时的初始高度
  11.                 double b = a / 2;
  12.                
  13.                 //定义一个变量记录落地的次数
  14.                 int i = 0;
  15.                
  16.                 //前面已经算出了第一次落地所经过的路程,也计算出了第二次初始下落的高度,
  17.                 //下面的for语句一次计算第2、3、4...次的总路程,和反弹高度,并分别用a、b两个变量进行记录
  18.                 for (i = 2; i <= 10; i++) {
  19.                         a = a + b * 2;
  20.                         b = b / 2;
  21.                 }
  22.                 System.out.println("第" + i + "次落地经过时" + "共" + a + "米");
  23.                 System.out.println("第" + i + "次落地时" + "共反弹" + b + "米");
  24.         }
  25. }

  26. // 请问一下 为什么i=2?我没有看懂..我算出来的结果是第11次经过和弹起 可是我算的是第10次啊 怎么搞的但是 答案还对
  27. // 我有点迷糊了..还有a=a+b*2也不怎么懂..希望明白人 帮小弟详细讲解一下
复制代码
回复 使用道具 举报
a在这里指的是所有次数弹跳高度总和,b指的是落地后又返回原来高度的一半。整体来看不管小球跳多少次b都是a的1/2高度 。
a=a+b*2的意思是:
a新总高度(a)=上一次总高度(a)+下一次起跳和落地高度(b*2)
至于你说的i为什么等于2你可以自己想象下,它是从小球第一次下落开始计数的,所以当小球落地回弹到最高点时,落地次数为1 而到达最高点的次数已经达到2了。楼主找个小球试试就知道了

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马