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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 滔哥   /  2012-7-21 00:16  /  11511 人查看  /  196 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我到网吧来把代码贴上来、、、

点评

感谢支持  发表于 2012-7-21 16:20
回复 使用道具 举报
看看时什么题
回复 使用道具 举报
张_涛 黑马帝 2012-7-21 13:20:24
123#
张_涛 发表于 2012-7-21 07:22

/**
* 题目:一球从100米高度自由落下,每次落地后反弹回原高度的一半;再落下,求它在第10次 落地时,共经过多少米?第10次反弹多高?
*/
public class ReboundTest {
        public static void main(String[] args) {
                // 定义初次落下的高度
                float height = 100;
                // 定义变量i记录一共反弹的次数
                int i = 10;
                // 定义变量count记录正在反弹的次数
                int count = 1;
                // 定义一个float数组记录每次反弹的高度(同时也是下次落下的高度)
                float[] reboundArr = new float;
               
                rebound(reboundArr, height, i, count);
                float sum = countSum(reboundArr) + height;;
               
                System.out.println("第10次(最后一次)落地时经过的总距离为:" + sum);
                System.out.println("第10次(最后一次)反弹的高度为:" + reboundArr[reboundArr.length - 1]);
        }
       
        //将每次反弹的高度记录到arr数组当中
        public static void rebound(float[] arr, float height, int i, int count) {
                arr[count - 1] = height / 2;
                count++;
                if (count <= i) {
                        rebound(arr, arr[count - 2], i, count);
                }
        }

        //统计反弹的总高度
        public static float countSum(float[] reboundArr) {
                float sum = 0;
                for (int i = 0; i < reboundArr.length - 1; i++) {
                        sum += 2 * reboundArr;
                        System.out.println("第" + (i + 1) + "次弹起的高度为:" + reboundArr);
                }
                return sum;
        }
}

/*
算法思路:
1. 根据每次落下反弹,因为其都是反弹落下距离的一半,因此多次反弹具有相同的原理,由此想到使用递归算法。
        在递归时,通过判断总弹起次数与当前弹起次数控制递归结束。
2. 使用rebound方法记录每次反弹的高度,即为落下高度的一半,存放到数组当中。
3. 而第10次落地时的距离包括第一次落下的距离,不包括第10次弹起的距离。而每次弹起,下次落下的距离是相等的,因此将其乘以2加入总距离当中。
4. 综上,即可得出所求。
*/

第一次算成第11次落地经过的距离了。
改过来了,运行结果:
第1次弹起的高度为:50.0
第2次弹起的高度为:25.0
第3次弹起的高度为:12.5
第4次弹起的高度为:6.25
第5次弹起的高度为:3.125
第6次弹起的高度为:1.5625
第7次弹起的高度为:0.78125
第8次弹起的高度为:0.390625
第9次弹起的高度为:0.1953125
第10次(最后一次)落地时经过的总距离为:299.60938
第10次(最后一次)反弹的高度为:0.09765625
回复 使用道具 举报
本帖最后由 陈雷 于 2012-7-21 14:29 编辑

  1. public class downBall {
  2. public static void main(String[] args) {
  3. float height=100; //定义高度为height
  4. float sum=height; //球弹跳的总路程为sum,第一次落下的高度为height
  5. for(int i=1;i<=10;i++){
  6. height=height/2; //每落下一次 高度减半
  7. System.out.println("第"+i+"次的高度为:"+height);
  8. sum=sum+height*2;
  9. System.out.println("第"+i+"次的路程为:"+sum);

  10. }
  11. }
  12. }
复制代码
第1次的高度为:50.0
第1次的路程为:200.0
第2次的高度为:25.0
第2次的路程为:250.0
第3次的高度为:12.5
第3次的路程为:275.0
第4次的高度为:6.25
第4次的路程为:287.5
第5次的高度为:3.125
第5次的路程为:293.75
第6次的高度为:1.5625
第6次的路程为:296.875
第7次的高度为:0.78125
第7次的路程为:298.4375
第8次的高度为:0.390625
第8次的路程为:299.21875
第9次的高度为:0.1953125
第9次的路程为:299.60938
第10次的高度为:0.09765625
第10次的路程为:299.8047


点评

第十次落地。。。咱都错了。。。这是十一次了...  发表于 2012-7-21 19:49

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3 我最喜欢这个答案...

查看全部评分

回复 使用道具 举报
看看什么题
回复 使用道具 举报
我也来看看题
回复 使用道具 举报
看看,看看..............
回复 使用道具 举报
搞的这么神秘,看看,看看..............
回复 使用道具 举报
本帖最后由 焦晨光 于 2012-7-21 13:56 编辑




评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
  1. /*
  2. 要求:一个小球从100米高出自由落下,每次反弹后高度减半,求在第十次落下后的高度和共经过的距离

  3. 思路:1,定义变量,高度double hight,落下次数 int t,距离double distance
  4. 2,定义一个球类Ball ,里面有一个BallDrop静态方法,方法里有一个for循环来实现10次落下动作
  5. 3,定义BallDropTest类,调用Ball里的BallDrop静态方法

  6. */
  7. class Ball
  8. {
  9. public static void BallDrop(double hight,int t)
  10. {
  11. double distance=0;
  12. for(int i=1;i<=t;i++)//控制落下次数
  13. {
  14. hight = hight/2.0;//求最后一次反弹后的高度
  15. distance += hight;//每次反弹距离的和,但是还多一次
  16. }
  17. distance = 100 + (distance-hight)*2;//下落跟反弹的总距离再加上球自身的高度
  18. System.out.println("最后一次反弹后的高度为:"+hight+"m");
  19. System.out.println("球经过的距离为: "+distance+"m");
  20. }
  21. }
  22. class BallDropTest
  23. {
  24. public static void main(String[] args)
  25. {
  26. new Ball().BallDrop(100,10);
  27. }
  28. }
复制代码
看了7天视频,我竟然能自己写代码了,虽然花的时间有点小多,还是挺有小成就感的自己给自己顶下子先~

demo.jpg (11.9 KB, 下载次数: 17)

demo.jpg

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报

public class aa
{
        public static void main(String[] args)
        {
                 
                double h = 100;  //初始高度
               
                double sum = 0;  //记录总路程
                int count = 1;  //记录下落次数
                int count2 = 1;//记录反弹次数

                while(count<=10)
                {
                        sum = sum+h+h/2;      //总路程
                       
                        System.out.println("第"+count+"次"+"下落"+h+"米");
                         
                        count++;  //下落次数加一
                        System.out.println("第"+count2+"次"+"反弹"+h/2+"米");
                       
                        h = h/2;  //每次落下高度改变为原来的二分之一
                        count2++;//反弹次数加一
               
                }
                System.out.println("总共经过"+sum+"米");
               
        }
           
}
不会截图,把打印结果粘贴出来:,可以验证
第1次下落100.0米
第1次反弹50.0米
第2次下落50.0米
第2次反弹25.0米
第3次下落25.0米
第3次反弹12.5米
第4次下落12.5米
第4次反弹6.25米
第5次下落6.25米
第5次反弹3.125米
第6次下落3.125米
第6次反弹1.5625米
第7次下落1.5625米
第7次反弹0.78125米
第8次下落0.78125米
第8次反弹0.390625米
第9次下落0.390625米
第9次反弹0.1953125米
第10次下落0.1953125米
第10次反弹0.09765625米
总共经过299.70703125米

评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
来看一下
回复 使用道具 举报
:lol来瞅一眼
回复 使用道具 举报
哎呀 来晚了

点评

不晚呢 继续做...  发表于 2012-7-21 18:56
回复 使用道具 举报
瞻仰下 3分题
回复 使用道具 举报
在world中总结的公式:




public class BallSport
{
        static final double h=100;//原始高度
        public static void main(String[] args)
        {
                ballSport(10,10);        
        }
        public static void ballSport(int downTime,int upTime)   //落下次数,反弹次数
        {
                /*10次落地总长度*/
                double retlen=0; //反弹一次的路程
                for(int x=1;x<downTime;x++)
                {               
                        retlen+=1/Math.pow(2,x);
                }
                System.out.println(downTime+"次共经过:"+(h+2*h*retlen)+"米");            
                //第10次反弹高度
                double reth=0;
                reth=(1/Math.pow(2,upTime))*100;
                System.out.println("第"+upTime+"次反弹高度:"+reth+"米");
        }

}
结果:
10次共经过:299.609375米第10次反弹高度:0.09765625米










评分

参与人数 1技术分 +3 收起 理由
蒋映辉 + 3

查看全部评分

回复 使用道具 举报
看看,到底是什么
回复 使用道具 举报
看看,到底是什么~~~~~~~~~
回复 使用道具 举报
来晚了,还是要看看.
回复 使用道具 举报
回复。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马