gpt4 book ai didi

java - 在Java中将文本文件读取到数组中

转载 作者:行者123 更新时间:2023-12-01 13:16:04 28 4
gpt4 key购买 nike

我对 Java 还很陌生(目前正在参加我的第一个编程类(class)),所以我的问题的答案可能就在我面前。

我的目标是读入如下文本文件:

4563123,112211324135412
2312311,222121324135211
2312345,112211324135421
5527687,212111313124412
7867567,111111111111111

其中第一组数字是 ID,第二组数字是一组测试答案(我有其中的 key )。一旦我读完答案,我需要将它们存储在一个数组中(我假设只是一个数组,因为我的类还没有涵盖 ArrayLists )。所有这些数据都需要存储在一个数组中,因为我需要在方法结束时返回它。

这是我到目前为止的代码:

public static String[] readFile(String filename)throws IOException{
Scanner inFile = new Scanner(filename);
String line;
String[] results = new String[101];
int i = 0;
while (inFile.hasNextLine()){
line = inFile.nextLine();
String[] incoming = line.split(",");
String wid = incoming[0];
String answer = incoming[1];
results[i] = wid;
results[i + 1] = answer;
i += 2;

}
inFile.close();
return results;
}

忽略字符串文件名是安全的,它是从主函数传入的。

每次运行此方法时,我都会遇到 ArrayOutOfBoundsException,主要是当我尝试将 incoming[1] 分配给 answer 时.

我盯着这段代码的时间比可能对我有好处的时间还要长,但似乎我就是无法理解它。任何帮助将不胜感激,无论是告诉我出了什么问题还是我可以做些什么来改进。

最佳答案

由于您使用的是 Java 7,因此请使用新的 Files API 和 try-with-resources 语句;另外,避免复制空行:

final Path file = Paths.get(filename);
String line;
String[] incoming;
String[] results = new String[101];
int nrElements = 0;

try (
final BufferedReader reader = Files.newBufferedReader(path,
StandardCharsets.UTF_8);
) {
while ((line = reader.readLine()) != null) {
incoming = line.split(",");
if (incoming.length != 2)
continue;
results[nrElements++] = incoming[0];
results[nrElements++] = incoming[1];
}
}

return Arrays.copyOfRange(results, 0, nrElements);

关于java - 在Java中将文本文件读取到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22460788/

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