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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
  3. */


  4. class  Ball
  5. {
  6.         public static void main(String[] args)
  7.         {

  8.                 //定义2个变量,h代表高度,s是经过的路程
  9.                 double h = 100, s = 100;        //从100米高度落下,所以s初始值就是100
  10.                 for (int i = 1; i < 10; i++);        //因为第一次已经计算在内(s=100),所以需要在落下9次.即循环9次
  11.                         s = s + h;        //每次落下的高度就是相加
  12.                         h = h / 2;        //每次高度都减少一半

  13.                 System.out.println("经过路程:" + s);
  14.                 System.out.println("反弹高度:" + h / 2);
  15.         }
  16. }
复制代码
輸出結果:經過路程:200;反彈高度:25;

19 个回复

倒序浏览
我也打了一遍,和你的输出结果不一样
回复 使用道具 举报
你的代码至少输出了十八个值
回复 使用道具 举报
我看错了,你的for循环没加大括号,只有两个值
回复 使用道具 举报
meibinlove 发表于 2014-7-18 17:21
我看错了,你的for循环没加大括号,只有两个值

哦  知道了  路程是不是一千米。
回复 使用道具 举报
for循环跟一个分号  for循环等于没有定义
回复 使用道具 举报
沐小北 发表于 2014-7-18 17:25
哦  知道了  路程是不是一千米。

咱用公式推一下:第一次是一百,第二次是一半也就是五十,以此类推结果不超过200;我也用的double类型,结果是199.8046875,第十次反弹是:0.1953125
回复 使用道具 举报 1 0
看到循环后面一个大大的分号
回复 使用道具 举报
单线程xia 发表于 2014-7-18 17:33
看到循环后面一个大大的分号

没注意:L
回复 使用道具 举报
Imp_x 高级黑马 2014-7-18 23:47:04
10#
meibinlove 发表于 2014-7-18 17:33
咱用公式推一下:第一次是一百,第二次是一半也就是五十,以此类推结果不超过200;我也用的double类型, ...

在思路上我有一个问题想问一下= =第一次直接落地是100米  然后是反跳原高度的一半对吧  那反弹上去就50米  又重新掉下来也50米 所以一上一下这样路程不也100米吗??然后50米 25米 12.5米 ......这样子  难道不应该是这样的吗0.0问的是共经过多少米
回复 使用道具 举报
More 发表于 2014-7-18 17:29
for循环跟一个分号  for循环等于没有定义

哦   多大了一个,但是我打印的结果 确实是 1000米的。
回复 使用道具 举报
Imp_x 发表于 2014-7-18 23:47
在思路上我有一个问题想问一下= =第一次直接落地是100米  然后是反跳原高度的一半对吧  那反弹上去就50米 ...

我们的思维是一致的,呵呵……
回复 使用道具 举报
Imp_x 高级黑马 2014-7-19 12:03:39
13#
自己敲了一遍代码= =算出来路程S=299.609375  反弹高度0.09765625
回复 使用道具 举报
哥们,感觉你的好像不对呀100米弹了10次还能弹到25米的高空??
回复 使用道具 举报
嗯,代码很精练
回复 使用道具 举报
meibinlove 发表于 2014-7-18 17:33
咱用公式推一下:第一次是一百,第二次是一半也就是五十,以此类推结果不超过200;我也用的double类型, ...

我和你的一样
回复 使用道具 举报

只算下落的,没算弹起的!
回复 使用道具 举报
Imp_x 发表于 2014-7-19 12:03
自己敲了一遍代码= =算出来路程S=299.609375  反弹高度0.09765625

这个应该是正解吧
回复 使用道具 举报
本帖最后由 heshaosheng 于 2016-1-5 11:04 编辑

/*
*题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;
*再落下,求它在?第10次落地时,共经过多少米?第10次反弹多高?
*/

public class LuoQiu{
         public static void main(String[] args){
                 double last_height = 0;     //记录最后的一次反弹高度
                 double current_height = 100;    //初始当前高 /*
* 如果要计算下落使用 double count_height = current_height ,
* 现在不使用下落计算
*/                 double count_height = 0;      //记录反弹高度总和
                 for(int i=1;i<=10;i++){
                         if(i != 10){                                //如果是第十次前的落球
                                 current_height = current_height / 2;      //记录当前反弹高度
                         }else{
                                 current_height = last_height = current_height / 2;    //如果是第十次落球(最后一次)记录当前反弹高度(也是最后一次反弹高度)
                         }
                         count_height += current_height;        //10次反弹高度总和(只计算反弹高度,如果计算下落使用count_height += current_height * 2)。
                 }
                 System.out.println("球在第十次落地后共经过了 "+count_height+" 米,第十次反弹的高度为 "+last_height+" 米");
         }
}





回复 使用道具 举报
最后的输出结果为 99.90234375(只计算反弹高度,没有计算下落)米和0.09765625米。

QQ图片20160105103559.png (1.71 KB, 下载次数: 85)

QQ图片20160105103559.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马