gpt4 book ai didi

Java:如何通过 ArrayList 中的新行读取它们并将其存储在数组中?

转载 作者:行者123 更新时间:2023-11-30 06:40:58 24 4
gpt4 key购买 nike

这是我的 .txt 文件的样子(但每行超过 100 个元素并且超过 100 行):

-0.89094    -0.86099    -0.82438    -0.78214    -0.73573    -0.68691    -0.63754
-0.42469 -0.3924 -0.36389 -0.33906 -0.31795 -0.30056 -0.28692

我想要做的是读取这个 .txt 文件并将它们存储在 Arryalist 中。问题是当我读取和存储这些数据时,他们将所有这些数据放在同一个数组中(我希望它们存储在按行分割的 2 个数组中)。

这是我的代码:

public class ReadStore {
public static void main(String[] args) throws IOException {

Scanner inFile = new Scanner(new File("Untitled.txt")).useDelimiter("\\s");
ArrayList<Float> temps = new ArrayList<Float>();

while (inFile.hasNextFloat()) {
// find next line
float token = inFile.nextFloat();
temps.add(token);

}

inFile1.close();

Float [] tempsArray = temps.toArray(new Float[0]);
for (Float s : tempsArray) {
System.out.println(s);
}
}

有什么建议可以让它发挥作用吗?

最佳答案

我可能会通过完整读取每一行,然后拆分空白来访问每个 float 来解决此问题。这解决了必须区分空格和行分隔符的问题。

public class ReadStore {
public static void main(String[] args) throws IOException {
Scanner inFile = new Scanner(new File("Untitled.txt"));
ArrayList<Float> temps = new ArrayList<Float>();

while (inFile.hasNextLine()) {
String line = inFile.nextLine();
String[] nums = line.trim().split("\\s+");
for (String num : nums) {
float token = Float.parseFloat(num);
temps.add(token);
}
Float [] tempsArray = temps.toArray(new Float[0]);
for (Float s : tempsArray) {
System.out.println(s);
}
}

inFile.close();
}
}

这是一个演示,显示该逻辑适用于输入文件的单行。请注意,我在分割每一行之前调用 String#trim() ,以防万一有我们不想要的任何前导或尾随空格。

Rextester

关于Java:如何通过 ArrayList 中的新行读取它们并将其存储在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44382783/

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