设计一个Java程序,完成: 原文件文件data.txt内容是:每行的数据个数(即各台设备采集的数据个数都是相同的)保证是相等的,但一行上的数据个数是不确定的。行的个数(即设备台数)是确定的。 12 54 67 89 16 -这是第一台设备采集的数据 32 63 76 89 21 -这是第二台设备采集的数据 87 32 98 56 31 -这是第三台设备采集的数据 为了插入到数据库的方面,现要求将其数据向右转90后写入文本文件data90.txt中,即数据变成如下方式写入文本文件data90.txt中:(每一列是一台设备的采集数据) 12 32 87 54 63 32 67 76 98 89 89 56 16 21 31
时间: 2024-03-23 15:39:44 浏览: 39
好的,以下是Java程序的实现:
```java
import java.io.*;
public class RotateData {
public static void main(String[] args) {
try {
// 读取原始数据文件
BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
// 读取第一行数据,确定每行的数据个数
String line = reader.readLine();
int count = line.split("\\s+").length;
// 创建数组保存所有数据
int[][] data = new int[count][count];
// 读取所有数据到数组中
int row = 0;
while (line != null) {
String[] nums = line.split("\\s+");
for (int col = 0; col < count; col++) {
data[col][row] = Integer.parseInt(nums[col]);
}
row++;
line = reader.readLine();
}
// 将数据向右转90度
int[][] rotatedData = new int[count][count];
for (int row1 = 0; row1 < count; row1++) {
for (int col1 = 0; col1 < count; col1++) {
rotatedData[col1][count - row1 - 1] = data[row1][col1];
}
}
// 将数据写入新文件
BufferedWriter writer = new BufferedWriter(new FileWriter("data90.txt"));
for (int row2 = 0; row2 < count; row2++) {
for (int col2 = 0; col2 < count; col2++) {
writer.write(rotatedData[row2][col2] + "\t");
}
writer.write("\n");
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
程序的核心是先读取原始数据文件,确定每行的数据个数,然后将所有数据读取到一个二维数组中。接着,将数据向右转90度,生成新的二维数组。最后,将新的二维数组写入到新文件中。
需要注意的是,程序中使用了正则表达式 "\s+" 来匹配所有的空白字符(包括空格、制表符、换行符等),以便正确地读取和写入数据。另外,在将数据向右转90度时,需要注意行和列的索引的变化。
最后,将程序保存为RotateData.java文件,然后在命令行中编译并运行代码即可。