用Java读取 sensordata .txt 文件的数据,对于sensor_ 1传感器 的数据,每 5 条记录,统计一次该传感器的平均温度。
时间: 2024-11-12 11:43:42 浏览: 12
在Java中,你可以使用`BufferedReader`和`ArrayList`来逐行读取`sensordata.txt`文件的内容,并对每个传感器的数据进行处理。针对sensor_1传感器,你需要找到它的数据行,并将连续的5条记录存储到一个列表中,然后计算这5条记录的平均温度。以下是一个简单的示例:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class SensorDataProcessor {
public static void main(String[] args) {
String fileName = "sensordata.txt";
String sensorName = "sensor_1";
double[] tempRecords = new double[5];
int recordCount = 0;
ArrayList<Double> sensorData = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null) {
if (line.contains(sensorName)) {
// 假设每一行都是一个完整的数据,包括温度和其他信息
// 这里只关心温度,所以忽略其他字段,假设temperature字段在最后
double temperature = Double.parseDouble(line.split(",")[最后一列索引]);
tempRecords[recordCount] = temperature;
recordCount++;
// 满足5条记录就进行统计
if (recordCount == 5) {
double averageTemperature = calculateAverage(tempRecords);
System.out.println("Sensor " + sensorName + " average temperature for the last 5 records is: " + averageTemperature);
recordCount = 0; // 清空记录数组准备下一轮统计
tempRecords = new double[5]; // 重新分配数组
}
}
}
// 防止因为读取不足而没有统计过整数倍的5条记录
if (recordCount > 0) {
double averageTemperature = calculateAverage(tempRecords);
System.out.println("Sensor " + sensorName + " average temperature for the remaining records is: " + averageTemperature);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static double calculateAverage(double[] temperatures) {
double sum = 0;
for (double temp : temperatures) {
sum += temp;
}
return sum / temperatures.length;
}
}
```
阅读全文