Java 只读取行中的特定部分以放入数组

Java reading only specific part in the line to put into an array

我是 Java 的新手。 有以下的txt文件

25/05/2022 23:55:31,180.0,45.0,13.9,Underweight
30/05/2022 22:24:05,161.0,67.0,25.8,Overweight
30/05/2022 22:58:29,121.0,98.0,66.9,Obese
30/05/2022 22:58:38,168.0,67.0,23.7,Healthy
30/05/2022 23:25:58,140.0,54.0,27.6,Overweight

有什么方法可以只读取每行后面的部分数据到数组中吗?

13.9
25.8
66.9
23.7
27.6

首先,您必须使用文件 class 或其他文件 class 来读取文件。您将必须阅读所有行并将其放入列表。现在这些是行,您可以从这些行中使用 string.split(",") 和您要获取的索引迭代并填充最终结果(列表)。这将是一种可能的方式。但是抓取索引和硬编码可能会在以后出现问题。

File file = new File("C:\Users\Desktop\test.txt"); 
      
      BufferedReader br = new BufferedReader(new FileReader(file)); 
      
      List<String> lines = new ArrayList<>();
      String string;
      List<String> result = new ArrayList<>();
     
      while ((string = br.readLine()) != null) 
        lines.add(string);
      } 

     for(var line : lines){
        String[] datas = line.split(",");
        if(datas.size()>3){
            results.add(datas[3]);
         }
     }
    return lines;

参考资料 - https://techblogstation.com/java/read-text-file-in-java/#:~:text=Java%20read%20file%20line%20by%20line%20using%20Files.readAllLines,Internally%20it%20uses%20BufferedReader%20to%20read%20the%20file.

通读每一行并用 ,(逗号)分隔行。使用索引访问要打印的值;

代码:

import java.io.BufferedReader;
import java.io.FileReader;

public class SplitFileAndPrintPart {
    public static void main(String[] args) {
        String fileName = "TestFile.txt";

        try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {  //[#1]
            String line;
            while ((line = br.readLine()) != null) { // [#2]
                String[] splitLine = line.split(","); // [#3]
                System.out.println(splitLine[3]); // [#4]
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解释:
#1:使用 FileReader 和 BufferedReader 读取文件;这里我们使用“try with resources”让资源自动关闭。
#2:从文件中读取每一行并将其分配给变量“line”。
#3:由于值是逗号分隔的,因此使用逗号分隔行。
#4: 由于你需要的数据在第 4 个位置(索引 3),打印索引 3 处的值。

输出:

13.9
25.8
66.9
23.7
27.6