《JAVA筑基100例》「第25题」一球从 100 米高度自由落下「建议收藏」

Java (81) 2023-04-21 16:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说《JAVA筑基100例》「第25题」一球从 100 米高度自由落下「建议收藏」,希望能够帮助你!!!。

#头条创作挑战赛#

❤️作者简介:大家好,我是小虚竹。Java领域优质创作者,CSDN博客专家,华为云享专家,掘金年度人气作者,阿里云专家博主,51CTO专家博主

❤️技术活,该赏

❤️点赞 收藏 ⭐再看,养成习惯

零、前言

今天是学习 「JAVA语言」 打卡的第25天,我的学习策略很简单,题海策略+ 费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着 「JAVA语言」 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。

一、题目描述

题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,

共经过多少米?第 10 次反弹多高?

二、解题思路

要求经过多少米,要注意的是:

1、第一次落地是100米,所以循环要从第二次开始算

2、每次球经过的距离是弹起高度的2倍(实质上是弹起+落下)

第10次反弹多高,只要有个变量来保存(每次球经过的距离除以2)就行了。

三、代码详解

不正规的示例:

代码:

public class Basics25 {
    public static void main(String[] args) {

        int i;
        double sum=100,H=sum/2;
        //做9次循环,第一次直接加上100米,之后用循环来计算
        for(i=2;i<=10;i++) {
            //每次球经过的距离是弹起高度的2倍(实质上是弹起+落下)
            sum=sum+2*H;
            //每次弹起的高度是上次的1/2
            H=H/2;             
        }
        System.out.println("第10次落地时,共经过"+sum+"米");
        System.out.println("第10次反弹为"+H+"米");

    }
}
《JAVA筑基100例》「第25题」一球从 100 米高度自由落下「建议收藏」_https://bianchenghao6.com/blog_Java_第1张

正规的示例:

代码:

public class Basics25_1 {
    public static void main(String[] args) {

        BigDecimal sum = new BigDecimal(100);
        final BigDecimal factor = new BigDecimal(2);
        BigDecimal height = sum.divide(factor); 
        //做9次循环,第一次直接加上100米,之后用循环来计算
        for(int i=2;i<=10;i++) {
            //每次球经过的距离是弹起高度的2倍(实质上是弹起+落下)
            sum=sum.add(height.multiply(factor));
            //每次弹起的高度是上次的1/2
            height = height.divide(factor);
        }
        System.out.println("第10次落地时,共经过"+sum+"米");
        System.out.println("第10次反弹为"+height+"米");

    }
}

《JAVA筑基100例》「第25题」一球从 100 米高度自由落下「建议收藏」_https://bianchenghao6.com/blog_Java_第2张

细心的你,有发现不正规的示例中,有几处问题?评论区中说说吧

我是虚竹哥,我们下一题见~

发表回复