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+"米");
}
}
代码:
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+"米");
}
}
细心的你,有发现不正规的示例中,有几处问题?评论区中说说吧
我是虚竹哥,我们下一题见~