小球下落问题描述:

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

问题的关键有:1.要求得第十次落地时,球走的总路程,即包括前九次的下落和弹起和第十次的下落

2.一次落地包括:下落和弹起,先下落,再弹起。

示意图如图所示:

其中,H为下落高度,H/2为弹起高度,一次的总路程s=H+H/2。

处理方法1:while()循环判断:

double wh = 100;

double sum = 0;

int num = 0;

while(num<9){//为什么要小于9?-因为num从0开始递增,所以要小于9.

//sum为总路程,每次下降的总路程为本次的下落和弹起高度之和加上之前的路程累积。

sum = sum+wh+wh/2;

wh = wh/2;

num++;

}

//sum后面再加一个wh的原因:所求的路程包括第十次下落的次数。

System.out.println("10次落地路程为:"+(sum+wh));

//第十次反弹高度为上一次下落高度的1/2.

System.out.println("第十次弹起高度为:"+wh/2);

处理方式2:for循环判断。

double h = 100;

double up = 0;

double down = 0;

for(int i = 0 ; i<9 ; i++){

down = down+h;

up = up+h/2;

h = h/2;

}

System.out.println("第十次弹起高度为:"+h/2);

System.out.println("10次落地路程为:"+(up+down+h));

for循环比较好理解:将每次下落的高度做和,弹起的高度做和,就可以得到想要的路程。第十次弹起高度就是前一次下落高度的1/2。

处理方式2(变式)- 面向对象的思想。

将球具体为一个对象,拥有属性(特征)高度height,路程sum,两个方法(动作)弹起-bound和下落-fall,对象的的具体实现如下:

public class Ball {

public double height ;

public double sum ;

public Ball(double height){

this.height=height;

sum = 0.0;

}

public void fall(){

sum = sum+height;

}

public void bound(){

height = height/2;

sum = sum + height;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return "球弹起的高度为:"+height+",路称为:"+sum;

}

}

需要重写toString()方法。简化输出。

调用函数如下:

public class BallTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

Ball b = new Ball(100);

for(int i = 1 ; i<10;i++){

b.fall();

b.bound();

}

b.fall(); //调用fall方法的原因:第十次下落后的路程,所以有一个下落的动作

System.out.println(b);

b.bound();//调用bound方法的原因:求第十次反弹的高度,所以要有一个弹起的动作

System.out.println("小球的高度为:"+b.height); }}

java小球下落_java基础-小球下落问题相关推荐

  1. java小球反弹_java实现小球碰撞反弹

    要实现这个功能做基础的就是要有一个小球,就像人吃饭这句话,少了人这个主角,说什么都是白说.世间所有事物都是对象,具有属性和操作,没有对象就没有一切.就下来我们就来生成一个小球,这里用到Panel类,创 ...

  2. java input 数组_Java基础之:数组

    Java基础之:数组 一组相同数据类型的数据,我们即称之为 数组,数组也是一种数据类型. 需要注意的是 , 数组和String 字符串 相同,也是引用类型的. 数组的初始化 方式一:动态初始化 四种格 ...

  3. java代码讲解_Java基础系列-代码块详解

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 前言 Java基础系列,尽量采用通俗易懂.循序渐进的方式,让大家真正理解Java基础知识! 代码块 ...

  4. java单线程循环调度_Java基础篇之Java线程模型

    原标题:Java基础篇之Java线程模型 Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程.实际上,Java使用线程来使整个环境异步.这有利于通过防止CPU循环的浪费来减少无效部分. ...

  5. java 方法泛型_Java基础学习,什么是泛型概念,使用泛型有哪些好处?

    一般的类和方法,只能使用具体的类型,要么是基础数据类型,要么是自定义类. 如果要编写可以应用与多种类型的代码,这种刻板的限制对代码的束缚就会很大. 泛型的字面概念: 适合用于许多类型. 在面向对象中, ...

  6. java e次方_java基础知识

    一.java的简介 1.后台开发语言.跨平台,安全性高.面向对象 二.java基础 1.类是java中最小编写代码的单元 2.语句要分号结束 3.括号成对出现 4.运行原理--从上往下 三.注释:代码 ...

  7. java 文件路径表达式_Java基础(二十二) Lambda表达式和File类

    函数式编程思想 强调的是做什么,而不是以什么样的方式来做,它忽略了面向对象的复杂语法,只要能够获取到结果,谁去做的,怎么做的,都不重要,重要的是结果,不重视过程. 冗余的Runnable代码 传统的写 ...

  8. java事件编程_java基础 ---Swing事件编程

    java基础 ---Swing事件编程 GUI的设计就剩个菜单组建,这个组件也是想当于容器套容器,在设计方面没有什么难度,主要是一些事件的响应.还有另一种事件的监听方式,也就是适配器监听方法. 1.菜 ...

  9. java 向父类_Java基础——面向对象(Object父类)

    原标题:Java基础--面向对象(Object父类) 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. Obj ...

  10. java 抽象类语法_JAVA基础语法8--多态/抽象类/抽象方法

    多态 继承.封装.多态.抽象是面向对象编程的四大基本特征.封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提条件下,改变类的内部结构,同时保护了数据.继承是为了重用父类代码,同时为多态做准备.那 ...

最新文章

  1. 用动态实现扩展TVM
  2. Centos7状态下查看防火墙状态及修改服务端口
  3. IOS面试_1.浅析内存管理
  4. 使用 Boost.Lambda 库创建并存储在 Boost.Function 对象中的函子中使用 Boost.Units 的数量、单位和绝对类型
  5. 封装成vla函数_第四章:Python之函数
  6. JavaOne 2012:向上,向上和向外:使用Akka扩展软件
  7. Java常用设计模式————单例模式
  8. Array with Odd Sum(CF-1296A)
  9. 代码重用_WebAssembly的速度和代码重用
  10. 程序员选手机那些事儿
  11. Linux裸设备管理详解--
  12. firefox 插件可能用得上的Firefox插件及下载
  13. 【系统架构师修炼之道】(8):绪论——DoDAF框架
  14. 软件需求收集、挖掘和分析方法
  15. V4L2驱动详解 API翻译
  16. bilibili_api,仅用 3 行代码获取B站(弹幕、评论、用户)数据
  17. python中rgb颜色_Python 转换RGB颜色值的示例代码
  18. 【C++】类和对象入门知识
  19. 一文读懂pid控制器
  20. 信任、公平、梦想—新拍拍,新起点-拍拍网蒉莺春

热门文章

  1. 【IoT】产品三问:什么是产品?什么是产品管理?产品经理职责是什么?
  2. 使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群
  3. ADSL共享上网(简单方法)
  4. minus的用法简介
  5. 华为手机热点无法连接_华为手机热点连不上
  6. python HEIC2jpg 压缩
  7. python bytes
  8. 刀塔霸业怎么在电脑上玩 刀塔霸业电脑版玩法教程
  9. 【逻辑思考】有时评论比内容更精彩
  10. 所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。