【问题标题】:How to add the first number of every row in a txt file to an array in Java如何将txt文件中每一行的第一个数字添加到Java中的数组中
【发布时间】:2022-01-19 22:50:55
【问题描述】:

我有一个如下所示的 txt 文件:

1 2 3 4

5 6 7 8

9 0 1 2

3 4 5 6

如何将每行的第一个数字添加到数组中,这意味着数组应该包含:1 5 9 3 就是这样。

【问题讨论】:

  • 请更新您的问题,向我们展示您到目前为止所做的尝试,以及您坚持的部分。打开文件?读线?获得线路的一部分?将其存储为数组?
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java arrays file


【解决方案1】:

目标文件 "test.txt" 必须位于您的项目文件夹中。

public static void main(String[] args) {
    int[] result = getArrayFromFile("test.txt");
    System.out.println(Arrays.toString(result));
}

private static int[] getArrayFromFile(String fileName) {
    try(Stream<String> stream = createStreamFromFile(fileName)) {
        return createArray(stream);
    }
    catch(IOException e) {
        e.printStackTrace();
    }
    return new int[0];
}

private static int[] createArray(Stream<String> stream) {
    return stream.filter(line -> line.matches(".*\\d+.*"))
            .map(line -> line.split("\\D")[0])
            .mapToInt(Integer::parseInt)
            .toArray();
}

private static Stream<String> createStreamFromFile(String fileName) throws IOException {
    return Files.lines(Path.of(fileName));
}

输出

[1, 5, 9, 3]

请告诉我们这个解决方案是否满足您的要求?

如果您有任何问题,请随时提问。

【讨论】:

  • 这可能有效,但如果文件包含多位数的数字,它将失败。你会如何解决这个问题?
  • @sorifend 你能提供一个实际的例子吗,我不知道你说的“多位数字”是什么意思?
  • 例如,如果您有17 2 3 29,那么这部分代码将失败line.substring(0, 1),因此通过寻找空间的第一个索引而不是第一个字符的子字符串。当然,如果文件只有一位数字,这无关紧要
  • @sorfiend 哦,对不起,现在我明白了。确实有道理,我稍后会编辑我的评论
猜你喜欢
  • 2020-06-12
  • 2021-06-22
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
相关资源
最近更新 更多