java - 将多维数组保存到文本文件中添加额外的列
问题描述
我有一个任务需要我将一个带有double
值的数组传递到 Java 中的文本文件中。我用于BufferedWriter
此任务,但问题是我在文本文件中获得了零值的额外列。
例如,如果我尝试将以下数据写入文本文件:
1.0, 2.0, 3.0
2.0, 1.0, 1.0
3.0, 2.0, 2.0
我得到以下结果:
1.0,2.0,3.0
2.0,1.0,1.0
3.0,2.0,2.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
0.0,0.0,0.0
这是我使用的代码:
ArrayList<String> list = new ArrayList<String>();
File file1 = new File("file.txt");
Scanner sc = null;
sc = new Scanner( file1);
String line = "";
int maxLen = 0;
while(sc.hasNextLine()){
line = sc.nextLine();
list.add(line);
if(line.length() > maxLen)
maxLen = line.length();
}
System.out.println(list);
int rows = maxLen;
int col = list.size();
double arr[][] = new double[rows][col];
rows = 0;
for(int i=0;i<col;i++)
{
String s = list.get(i);
String []values = s.split(", ");
if(rows < values.length)
rows = values.length;
for(int j=0;j<values.length;j++)
{
if (!values[j].isEmpty()) {
arr[j][i] = Double.parseDouble(values[j]);
}
}
}
for(int i=0;i<rows;i++)
{
for(int j=0;j<col;j++)
{
System.out.print(arr[i][j]+", ");// displaying numbers
}
System.out.println();
}
File filename = new File("FinalTopFeatures1.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(filename));
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
bw.write(arr[i][j] + ((j == arr[i].length-1) ? "" : ","));
}
bw.newLine();
}
bw.close();
解决方案
检查数组的长度 ( arr.length
)。它正在写入包含零值的整个数组。如果您不想写入所有零值,那么:您可以减小 arr 大小或仅针对包含数据的行数迭代 for 循环。假设您的情况只有 3 行包含数据。所以:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < col; j++) {
bw.write(arr[i][j] + ((j == col-1) ? "" : ","));
}
bw.newLine();
}