可以自動產生「分析結果」──像是平均血壓、最高/最低值、偏高或偏低的天數
新增程式碼:
1.延續昨天的版本只是改進exportReport()方法
public static void exportReport(ArrayList<Record> records) {
if (records.isEmpty()) {
System.out.println("目前沒有任何資料可匯出!");
return;
}
try (FileWriter writer = new FileWriter("report.txt")) {
writer.write("=== 30天血壓紀錄報告 ===\n\n");
int totalSys = 0, totalDia = 0;
int highDays = 0, lowDays = 0;
int maxSys = Integer.MIN_VALUE, minSys = Integer.MAX_VALUE;
totalSys和totalDia為累加所有天數的收縮壓與舒張壓,這樣最後計算平均值比較方便。
hightDays和lowDays分別為計算偏高和偏低。
maxSys為找出30天裡面的最高收縮壓,把初始值設成Integer.MIN_VALUE方便比較,同理minSys。
2.之中的for迴圈
for (Record r : records) {
writer.write("第 " + r.day + " 天:收縮壓=" + r.systolic +
" 舒張壓=" + r.diastolic + " 脈搏=" + r.pulse + "\n");
// 統計分析
totalSys += r.systolic;
totalDia += r.diastolic;
if (r.systolic > 130 || r.diastolic > 85) highDays++;
if (r.systolic < 90 || r.diastolic < 60) lowDays++;
if (r.systolic > maxSys) maxSys = r.systolic;
if (r.systolic < minSys) minSys = r.systolic;
}
執行結果:
=== 血壓追蹤系統 ===
1. 新增資料
2. 顯示所有資料
3. 查詢指定日期資料
4. 匯出報告
5. 離開
請選擇功能:1
請輸入收縮壓:120
請輸入舒張壓:80
請輸入脈搏:70
第 1 天資料已新增!
請選擇功能:4
報告已成功匯出!檔名:report.txt
在文字檔上的顯示:
=== 30天血壓紀錄報告 ===
第 1 天:收縮壓=120 舒張壓=80 脈搏=70