You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.9 KiB
54 lines
1.9 KiB
/**
|
|
* 传感器数据清洗处理器
|
|
* 功能:遍历传感器数组,根据规则过滤异常数据并计算有效数据的平均值
|
|
*/
|
|
|
|
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("无有效数据");
|
|
}
|
|
}
|
|
|