From c5c301c47405786f7aaac46924e35c65a75772f3 Mon Sep 17 00:00:00 2001 From: Songrui <1778280163@qq.com> Date: Tue, 17 Mar 2026 23:11:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8B=E7=91=9E-202506050301?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/w2/SensorDataCleaner.java | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/w2/SensorDataCleaner.java diff --git a/test/w2/SensorDataCleaner.java b/test/w2/SensorDataCleaner.java new file mode 100644 index 0000000..c0dfc47 --- /dev/null +++ b/test/w2/SensorDataCleaner.java @@ -0,0 +1,54 @@ +/** + * 传感器数据清洗处理器 + * 功能:遍历传感器数组,根据规则过滤异常数据并计算有效数据的平均值 + */ + +void main() { + // 传感器原始数据数组 + int[] sensorData = {85, -5, 92, 0, 105, 999, 88, 76}; + + // 用于累计有效数据的总和 + int sum = 0; + // 用于统计有效数据的个数 + int count = 0; + + IO.println("=== 传感器数据清洗开始 ==="); + + // 遍历传感器数据数组 + for (int data : sensorData) { + // 情况 1: 检查是否为致命错误 (999 代表传感器硬件断开) + if (data == 999) { + IO.println("致命错误:传感器掉线,终止处理"); + // 使用 break 立即终止整个循环 + break; + } + + // 情况 2: 检查数据是否在正常范围内 (1 到 100 之间,包含 1 和 100) + if (data >= 1 && data <= 100) { + // 数据有效,累加到总和并增加计数 + sum += data; + count++; + IO.println("数据 [" + data + "] 有效,已计入总和"); + } + // 情况 3: 数据无效 (0、负数,或大于 100 但不是 999) + else { + // 使用 continue 跳过当前循环,不执行后续代码 + IO.println("警告:发现越界数据 [" + data + "],已跳过"); + } + } + + IO.println("=== 传感器数据清洗结束 ==="); + + // 循环结束后,根据有效数据个数处理最终结果 + if (count > 0) { + // 有有效数据,计算平均值 + // 注意:需要将 sum 强制转换为 float 或 double,避免整数除法导致精度丢失 + double average = (double) sum / count; + IO.println("有效数据个数:" + count); + IO.println("有效数据总和:" + sum); + System.out.printf("有效数据平均值:%.2f%n", average); + } else { + // 没有任何有效数据 + IO.println("无有效数据"); + } +}