gpt4 book ai didi

java - 将 .txt 文件中的 double 读取到列表中

转载 作者:行者123 更新时间:2023-12-02 08:20:54 24 4
gpt4 key购买 nike

我正在尝试从 .txt 文件中读取 double 值并将它们全部放入列表中。

这是我到目前为止的代码 ->

(我有一种方法来请求文件并获取数据流,还有一种方法可以将 double 放入列表中。)

    public InputFile () throws MyException {
fileIn = null;
dataIn = null;
do {
filename = JOptionPane.showInputDialog("What is the file called? ");
try {
fileIn = new FileInputStream((filename + ".txt"));
dataIn = new DataInputStream(fileIn);

return;
}
catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "There is no "+filename + ".txt");
}
}
while ( Question.answerIsYesTo("Do you want to retype the file name") );
throw new MyException("No input file was chosen");
}

这部分工作正常。

        public ProcessMain() {
boolean EOF = false;

List <Double> allNumbers = new ArrayList <Double> () ;

try {

InputFile inputFile = new InputFile();

while(EOF == false) {
try {
allNumbers.add(inputFile.dataIn.readDouble());
}
catch(EOFException e){ EOF = true; }
}

// List manipulation here. I have no problems with this part.

}
catch (Exception e) {
System.out.println(e);
}

System.out.println(allNumbers);

我得到以下信息 -

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

有什么想法吗?

最佳答案

DataInputStream 实际上用于读取二进制数据,例如从 socket 。我认为你想要的只是简单的 FileReader ,然后使用 Double.parseDouble(String)Double.valueOf(String) 进行解析 - 取决于无论您想要获取原始类型还是对象类型。

如果您的输入文件包含新行中的每个数字,您可以使用 BufferedReader.readLine 。否则你将需要一些简单的解析,例如查找空格或逗号分隔的值。

例如,要读取包含新行中每个数字的文件,您可以执行以下操作:

import java.io.*;

public class DoubleReader {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(args[0]));
String line = null;
while((line = reader.readLine()) != null) {
Double d = Double.valueOf(line);
System.err.println(d);
}
}
}

但是,如果您的文件以不同的方式分隔数字(例如空格或逗号),您在读取文件以提取(解析)您的值时将需要做一些额外/不同的工作。

Parsing是关于对您的数据进行标记,以便您可以提取您感兴趣的位。

关于java - 将 .txt 文件中的 double 读取到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487574/

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