黑马程序员技术交流社区

标题: 这道题不会,写了很久,感觉代码很怂? [打印本页]

作者: myzhang    时间: 2014-9-12 12:12
标题: 这道题不会,写了很久,感觉代码很怂?
需求:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?



作者: myzhang    时间: 2014-9-12 12:14
  1. public class Main {
  2. private double TotalHeight = 100;
  3. private double CurHeight = 50;

  4. public void drop(int times) {
  5. if ((times - 1) == 0) {
  6. return;
  7.            }

  8. setTotalHeight(getTotalHeight() + 2 * getCurHeight());
  9. setCurHeight(getCurHeight() / 2);

  10. drop(times - 1);
  11.         }

  12. public double getTotalHeight() {
  13. return TotalHeight;
  14.         }

  15. public void setTotalHeight(double totalHeight) {
  16. TotalHeight = totalHeight;
  17. }

  18. public double getCurHeight() {
  19. return CurHeight;
  20.        }

  21. public void setCurHeight(double curHeight) {
  22. CurHeight = curHeight;
  23.       }

  24. public static void main(String[] args) {
  25. Main main = new Main();
  26. main.drop(2);
  27. System.out.println("Total height is " + main.getTotalHeight());
  28. System.out.println("Current height is " + main.getCurHeight());
  29.         }
  30. }
复制代码

作者: myzhang    时间: 2014-9-12 12:15
myzhang 发表于 2014-9-12 12:14

感觉这个代码不是很好,但我想不出来更好的。。。
作者: 夜半风    时间: 2014-9-12 12:40
不会是课程设计吧?
作者: java_dream    时间: 2014-9-12 13:49
  1. package com.cai.test;

  2. public class FFBody {
  3.        
  4.         public static void main(String[] args){
  5.                 freeFallingBody(0F,100F,1);
  6.         }
  7.        
  8.         /**
  9.          *
  10.          * @param distance  小球经过距离
  11.          * @param initHigh  小球反弹高度
  12.          * @param times     小球第times次落下
  13.          */
  14.         public static void freeFallingBody(double distance,double initHigh,int times){
  15.                 if(times<10){
  16.                         distance += initHigh*1.5;
  17.                         initHigh *= 0.5;
  18.                         times++;
  19.                         //递归
  20.                         freeFallingBody(distance,initHigh,times);
  21.                        
  22.                 }else if(times==10){
  23.                         distance += initHigh*1.5;
  24.                         initHigh *= 0.5;
  25.                        
  26.                         System.out.println("小球第"+times+"次时经过"+distance+"米");
  27.                         System.out.println("小球第"+times+"次时反弹"+initHigh+"米");
  28.                 }
  29.         }

  30. }
复制代码

作者: myzhang    时间: 2014-9-14 19:50
长知识了
作者: xiayoutianxia    时间: 2014-9-14 20:18
用右移1位会不会更好
作者: MeryStyle    时间: 2014-9-14 23:48
6楼上说的很好
作者: lq你微笑时好美    时间: 2014-9-15 00:14
大神…………
作者: myzhang    时间: 2014-9-15 14:51
想去黑马真不容易啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2