【详解】使用java解决-一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?

举报
皮牙子抓饭 发表于 2026/01/17 23:21:35 2026/01/17
【摘要】 使用Java解决:一球从100米高度自由落下,每次落地后反跳回原高度的一半问题描述假设有一个小球从100米的高度自由落下,每次落地后都会反弹到原高度的一半。要求计算这个小球在第10次落地时,总共经过了多少米的距离,并且第10次反弹的高度是多少。解决思路初始高度:小球的初始高度为100米。每次反弹:每次落地后,小球会反弹到前一次高度的一半。总距离计算:小球在每次落地时,会增加两段距离(下落和反...

使用Java解决:一球从100米高度自由落下,每次落地后反跳回原高度的一半

问题描述

假设有一个小球从100米的高度自由落下,每次落地后都会反弹到原高度的一半。要求计算这个小球在第10次落地时,总共经过了多少米的距离,并且第10次反弹的高度是多少。

解决思路

  1. 初始高度:小球的初始高度为100米。
  2. 每次反弹:每次落地后,小球会反弹到前一次高度的一半。
  3. 总距离计算:小球在每次落地时,会增加两段距离(下落和反弹),除了第一次落地只有下落距离。
  4. 第10次反弹高度:计算第10次反弹的高度。

Java代码实现

public class BallBounce {
    public static void main(String[] args) {
        double initialHeight = 100.0; // 初始高度
        int times = 10; // 落地次数
        double totalDistance = 0.0; // 总距离
        double currentHeight = initialHeight; // 当前高度

        // 第一次落地
        totalDistance += currentHeight;
        for (int i = 1; i <= times; i++) {
            currentHeight /= 2;
            if (i < times) {
                totalDistance += currentHeight * 2; // 下落 + 反弹
            } else {
                totalDistance += currentHeight; // 最后一次只计算下落
            }
        }

        System.out.println("第10次落地时,总共经过的距离为: " + totalDistance + " 米");
        System.out.println("第10次反弹的高度为: " + currentHeight + " 米");
    }
}

代码解释

  1. 初始化变量
  • ​initialHeight​​:初始高度为100米。
  • ​times​​:落地次数为10次。
  • ​totalDistance​​:用于记录总距离。
  • ​currentHeight​​:当前高度,初始值为100米。
  1. 第一次落地
  • 小球从100米高度落下,因此总距离增加100米。
  1. 循环计算每次落地和反弹
  • 每次落地后,当前高度减半。
  • 如果不是最后一次落地,总距离增加当前高度的两倍(下落 + 反弹)。
  • 如果是最后一次落地,总距离只增加当前高度(下落)。
  1. 输出结果
  • 输出第10次落地时总共经过的距离。
  • 输出第10次反弹的高度。

运行结果

运行上述代码,输出结果如下:

第10次落地时,总共经过的距离为: 299.609375 米
第10次反弹的高度为: 0.09765625 米


这个问题可以通过Java编程来解决。我们需要计算球在每次落地和反弹过程中所经过的总距离,并且还需要知道第10次反弹的高度。

下面是一个简单的Java程序来实现这个功能:

public class BallBounce {
    public static void main(String[] args) {
        double initialHeight = 100.0; // 初始高度
        int bounces = 10; // 落地次数
        double totalDistance = 0.0; // 总距离
        double currentHeight = initialHeight; // 当前高度

        for (int i = 0; i < bounces; i++) {
            totalDistance += currentHeight; // 加上落下的距离
            if (i < bounces - 1) {
                totalDistance += currentHeight / 2; // 加上反弹的距离(最后一次落地不考虑反弹)
            }
            currentHeight /= 2; // 更新当前高度为反弹后的新高度
        }

        System.out.println("第10次落地时,共经过 " + totalDistance + " 米");
        System.out.println("第10次反弹的高度为 " + currentHeight + " 米");
    }
}

代码解释:

  1. 初始化变量
  • ​initialHeight​​:初始高度,设置为100米。
  • ​bounces​​:落地次数,设置为10次。
  • ​totalDistance​​:总距离,初始值为0。
  • ​currentHeight​​:当前高度,初始值为100米。
  1. 循环计算
  • 使用一个​​for​​循环,循环次数为10次(即球落地10次)。
  • 每次循环中,先加上球落下的距离(即当前高度)。
  • 如果不是最后一次落地(即​​i < bounces - 1​​),则再加上球反弹的距离(即当前高度的一半)。
  • 更新当前高度为反弹后的新高度(即当前高度的一半)。
  1. 输出结果
  • 输出球在第10次落地时总共经过的距离。
  • 输出球在第10次反弹的高度。

这个问题可以通过Java编程来解决,主要思路是利用循环来模拟球的下落和反弹过程。下面是一个具体的实现方法:

public class BouncingBall {
    public static void main(String[] args) {
        double initialHeight = 100.0; // 初始高度为100米
        int bounces = 10; // 落地次数
        double totalDistance = 0.0; // 总路程
        double currentHeight = initialHeight; // 当前高度

        for (int i = 1; i <= bounces; i++) {
            // 第一次下落
            if (i == 1) {
                totalDistance += currentHeight;
            } else {
                // 之后每次下落后再上升,所以距离要乘以2
                totalDistance += 2 * currentHeight;
            }
            // 更新当前高度为上次高度的一半
            currentHeight /= 2;
        }

        System.out.println("在第" + bounces + "次落地时,球共经过了 " + totalDistance + " 米。");
        System.out.println("第" + bounces + "次反弹的高度为 " + currentHeight + " 米。");
    }
}

代码解释:

  1. 初始化变量
  • ​initialHeight​​:初始高度,设定为100米。
  • ​bounces​​:球落地的次数,设定为10次。
  • ​totalDistance​​:球总共走过的距离,初始化为0。
  • ​currentHeight​​:球当前的高度,初始值为​​initialHeight​​。
  1. 循环计算
  • 使用一个​​for​​循环来模拟球的下落和反弹过程,循环次数为​​bounces​​(10次)。
  • 在第一次下落时,球只下落不反弹,因此只增加​​currentHeight​​到​​totalDistance​​。
  • 从第二次开始,每次下落后还会反弹,因此每次增加的距离是​​2 * currentHeight​​。
  • 每次循环结束时,更新​​currentHeight​​为上次高度的一半。
  1. 输出结果
  • 打印出球在第10次落地时总共经过的距离。
  • 打印出第10次反弹的高度。

这个程序能够准确地计算出球在第10次落地时总共经过的距离以及第10次反弹的高度。希望这个示例对你有帮助!如果有任何问题或需要进一步的解释,请随时告诉我。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。