gpt4 book ai didi

java - 读取文件并保存为双数组,然后将其写入新文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:39 25 4
gpt4 key购买 nike

我正在做这个作业,我应该将一个充满整数的 .txt 文件读取到一个 double 数组中,然后将此 double 数组写入另一个 .txt 文件中。

起初我以为一切正常,因为我能够读取该文件并将其显示为图像,然后将其保存为 .txt 文件中 double。但是,当我尝试在另一节课中使用相同的类文件(在我创建的框架中显示它)时,我不断将 0.0 作为输出 .txt 文件的值。下面是我的读写类的代码:

import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class IO {
FileDialog fd;
public double[][] readData() {
fd = new FileDialog(new Frame(), "Open Files", FileDialog.LOAD);
fd.setVisible(true);
File f = null;
if ((fd.getDirectory() != null)||( fd.getFile() != null)) {
f = new File(fd.getDirectory() + fd.getFile());
}
FileReader fr = null;
try {
fr = new FileReader (f);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
BufferedReader br = new BufferedReader(fr);
int lines = -1;
String textIn = " ";
String[] file = null;
try {
while (textIn != null) {
textIn = br.readLine();
lines++;
}
file = new String[lines];
fr = new FileReader (f);
br = new BufferedReader(fr);
for (int i = 0; i < lines; i++) {
file[i] = br.readLine();
}
br.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
double[][] data = new double [lines][];
for (int i = 0; i < lines; i++) {
StringTokenizer st = new StringTokenizer(file[i],",");
data[i] = new double[st.countTokens()];
int j = 0;
while (st.hasMoreTokens()) {
data[i][j] = Double.parseDouble(st.nextToken());
j++;
}
}
return data;
}


public void writeData(double[][] dataIn) {
fd = new FileDialog(new Frame(), "Save Files", FileDialog.SAVE);
fd.setVisible(true);
File f = null;
if ((fd.getDirectory() != null)||( fd.getFile() != null)) {
f = new File(fd.getDirectory() + fd.getFile());
}
FileWriter fw = null;
try {
fw = new FileWriter (f, true);
} catch (IOException ioe) {
ioe.printStackTrace();
}
BufferedWriter bw = new BufferedWriter (fw);
String tempStr = "";
try {
for (int i = 0; i < dataIn.length; i++) {
for (int j = 0; j < dataIn[i].length; j++) {
tempStr = String.valueOf(dataIn[i][j]);
bw.write(tempStr);
}
bw.newLine();
}
bw.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}

我尝试读取的txt文件有300行和300列,其中并非所有列都填满了int数字。我可以将输入 txt 设为 Display,但无法将其另存为具有相同值但为 double 而不是 int 的 txt 文件。

有人可以帮我吗?

最佳答案

我不确定我是否理解您的完整问题,但您至少遇到了写入文件时忘记在每个数字后添加逗号的问题。由于 readData 使用逗号分隔数字,因此程序无法读取程序生成的文件。只需更改

for (int j = 0; j < dataIn[i].length; j++) {
tempStr = String.valueOf(dataIn[i][j]);
bw.write(tempStr);

for (int j = 0; j < dataIn[i].length; j++) {
bw.write(String.valueOf(dataIn[i][j]) + ",");

(删除了中间的 tempStr,因为它不像您现在的代码那样不必要)。

关于java - 读取文件并保存为双数组,然后将其写入新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com