Java黑皮书课后题第1章:*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天
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天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第1章:1.10(以
- 下一篇: Java黑皮书课后题第1章:1.12(以