Java黑皮书课后题第1章:*1.11(人口估算)

  • 题目
    • 题目描述
    • 破题
  • 代码块
  • 方法评析
  • 为什么print函数内的表达式不能分开
  • 修改日志

题目

题目描述

*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天。
(每7s出生1人,每13s死亡1人,每45s有移民迁入)
后面提示有点儿冗余,概括一下就是:
5 / 4 = 1
而5.0 / 4 = 1.25 且 5 / 4.0 = 1.25 且 5.0 / 4.0 = 1.25

破题

先假设人口为0,每7s出生1人,每13s死亡1人,每45s有移民迁入
用这仨数分别求出一年出生、死亡、移民迁入的数量(这个时候要带小数部分)
一年出生+一年迁入-一年死亡=一年净增长数量
再将求出的净增长数量直接去掉小数部分
带入“当前人口312 032 486”
312 032 486+一年净增长=第一年人口数
312 032 486+2*一年净增长=第二年人口数
……

另外,312 032 486在Java语法中不存在,如果想每三位数分开一次,需要用_分隔,即312_032_486(可以用在表达式中)

代码块

public class Test1_11 {public static void main(String[] args) {/*** 法1思路:适合刚接触Java* 一年总秒数:365*24*60*60* 一年人口净增长:365*24*60*60/7.0+365*24*60*60/45.0-365*24*60*60/13.0*/System.out.println(365*24*60*60/7.0+365*24*60*60/45.0-365*24*60*60/13.0);// 求得2780096.7032967033,去掉小数部分为2780096// 当前人口为312 032 486System.out.println("第一年人口:"+(312_032_486+2_780_096));System.out.println("第二年人口:"+(312_032_486+ 2 * 2_780_096));System.out.println("第三年人口:"+(312_032_486+ 3 * 2_780_096));System.out.println("第四年人口:"+(312_032_486+ 4 * 2_780_096));System.out.println("第五年人口:"+(312_032_486+ 5 * 2_780_096));// 法2int people = 312_032_486;       // 原先人口数// 一年净增长double myTime = 365*24*60*60;   // 一年秒数double a = myTime / 7.0;        // 一年出生double b = myTime / 45.0;       // 一年迁入double c = myTime / 13.0;       // 一年死亡int increase =(int)(a+b-c);     // 一年净增长// 输出每年人口System.out.println("第一年人口:"+(people+increase));System.out.println("第二年人口:"+(people+ 2 * increase));System.out.println("第三年人口:"+(people+ 3 * increase));System.out.println("第四年人口:"+(people+ 4 * increase));System.out.println("第五年人口:"+(people+5 * increase));/**输出:* 2780096.7032967033* 第一年人口:314812582* 第二年人口:317592678* 第三年人口:320372774* 第四年人口:323152870* 第五年人口:325932966* 第一年人口:314812582* 第二年人口:317592678* 第三年人口:320372774* 第四年人口:323152870* 第五年人口:325932966*/}
}

方法评析

因为题目并不严谨,笔者在求一年出生、一年死亡、一年迁入时是先分别求出带小数数值double值,再加起来去掉小数部分转化为不带小数值int值
当然还有一种方法是在求一年出生、一年死亡、一年迁入时,求的数值不带小数数值
以上两种方法两种结果,代码块的两个方法时用第一种思路做出来的
第二种方法相对第一种更简单,去掉上面代码求一年出生、一年死亡、一年迁入表达式中的小数数值和小数点即可

为什么print函数内的表达式不能分开

可见我的另一篇blog:(也是本书1.9)

https://blog.csdn.net/weixin_46356698/article/details/119771883

修改日志

Java黑皮书课后题第1章:*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天相关推荐

  1. Java黑皮书课后题第5章:**5.22(金融应用:显示分期还贷时间表)对于给定的贷款额,月支付额包括偿还本金及利息。编写一个程序,让用户输入贷款总额年限利率,然后显示分期还贷时间表

    5.22(金融应用:显示分期还贷时间表)对于给定的贷款额,月支付额包括偿还本金及利息.编写一个程序,让用户输入贷款总额年限利率,然后显示分期还贷时间表 题目 题目概述 运行示例 代码 题目 题目概述 ...

  2. Java黑皮书课后题第6章:*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数。编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数

    6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数.编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数 题目 题目描述 破题 代码 运行示例 题目 ...

  3. Java黑皮书课后题第6章:*6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和。使用下面的方法头:public static int sumDigits(long n)

    6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和.使用下面的方法头:public static int sumDigits(long n) 题目 题目概述 槽点 代码 运行示例 ...

  4. Java黑皮书课后题第2章:*2.21(金融应用:计算未来投资回报)编写程序,读取投资总额、年利率和年龄,显示未来投资回报金额

    *2.21(金融应用:计算未来投资回报)编写程序,读取投资总额.年利率和年龄,显示未来投资回报金额 题目 题目概述 举例与运行示例 思路 代码 赘述 题目 题目概述 2.21(金融应用:计算未来投资回 ...

  5. Java黑皮书课后题第7章:*7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目

    7.22(计算一个字符串中大写字母的数目)编写程序,从命令行输入一个字符串,然后显示字符串中大写字母的数目 题目 题目描述 破题 代码 运行实例 题目 题目描述 7.22(计算一个字符串中大写字母的数 ...

  6. Java黑皮书课后题第2章:2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加

    2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加 题目 题目描述 运行示例 题目槽点与破题 题目槽点 破题 如何提取数字 代码块 方法评价 题目 题目描述 2.6 ...

  7. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  8. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

  9. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类

    Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...

  10. Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中

    Java黑皮书课后题第10章:10.2(BMI类)将下面的新构造方法加入BMI类中 题目 程序说明 题目槽点 代码:Test2_BMI.java 运行实例 题目 程序说明 Test2_BMI.java ...

最新文章

  1. ES6-const注意
  2. Elixir日常观察 VOL.1
  3. maven打包 jar中没有主清单属性
  4. python图像直方图与直方图均衡化
  5. HDU 5486 Difference of Clustering 图论
  6. Android SQLite 数据库详细介绍
  7. Orleans 知多少 | Orleans 中文文档上线
  8. 递归函数基例和链条_链条和叉子
  9. LeetCode 1011. 在 D 天内送达包裹的能力(二分查找)
  10. P4172 [WC2006]水管局长 LCT维护最小生成树
  11. Oracle报错:IO Error: Invalid number format for port number
  12. sql通用防注入程序php,sql通用防注入系统_PHP教程
  13. docker之基础命令相关操作下
  14. 转:Rust 调用C/C++
  15. 上市也没打算盈利?Hadoop之父企业Cloudera好任性
  16. python植物大战僵尸代码例_python实现植物大战僵尸游戏实例代码
  17. mysql字符串拼接有空值_MySQL字符串拼接
  18. 2021SC@SDUSC Zxing开源代码(十四)Aztec二维码(三)
  19. linux 下ssd训练自己的数据
  20. 三国群英传服务器维护是几点,20191112维护公告

热门文章

  1. python新手程序_推荐:一个适合于Python新手的入门练手项目
  2. 树莓派dht11上云_树莓派使用 DHT11 / DHT22 温湿度传感器
  3. P1141 01迷宫(BFS+记忆化)
  4. 小a的计算器(牛客签到题A)-简单模拟
  5. 阿里云PolarDB论文入选数据库顶会SIGMOD2021 最新一代架构领先世界
  6. Seata 1.4.0 重磅发布
  7. 阿里云李飞飞:传统数据库步履蹒跚,未来的机会在哪里?
  8. python pynlpir中科院分词的使用
  9. oracle行列转换总结
  10. Oracle 数据类型及存储方式