【问题标题】:How to convert a txt file into array in Java so I can deal with every array separately如何将 txt 文件转换为 Java 中的数组,以便我可以分别处理每个数组
【发布时间】:2020-05-04 11:42:51
【问题描述】:

我有一个 txt 文件,其中包含一些数字,每 9 个数字之间有一个空格。例如:853617639 975336865。 我使用此代码导出了文件:

import java.io.*; 
public class ReadingFromFile { 

  public static void main(String[] args) throws Exception 
  { 
      try {
            FileReader fichierALire = new FileReader("Test.txt");
            int c = fichierALire.read();
            while (c != -1) {
                System.out.print((char) c);
                c = fichierALire.read();
                }
            fichierALire.close();
        } catch (IOException exception) {
            System.out.println("There's a mistake with: " + exception.getMessage());


        }
      }}

现在,我需要将此文件转换为数组来管理输出。我想看看,在前 9 个数字中,一个数字是否重复了两次或更多次,如果是,我想用一个未使用的数字替换它。然后,我想对另一批(最后 9 个数字)做同样的事情。

我的第一步是将 txt 文件转换为数组,但我没有找到可以给我输出的方法:{8,5,3,6,1,7,6,3,9,9,7,5,3,3,6,8,6,5}

当我找到获得此输出的方法时,我必须创建一个代码来查看在前 9 个 int 中是否有重复的 int,然后对其进行修改以使其尊重我上面说的条件。

感谢您的帮助!

【问题讨论】:

  • 文本文件的外观如何?它有单行还是多行?为什么不为此使用java.nio

标签: java arrays text type-conversion


【解决方案1】:

我假设您的文件如下所示:

23213461 2136487236 2873648723 28734682 3674324 92341286 8726387462 2837467364 376427863473

但这也适用于这样的文件:

2376487234 sjdhfkajsdh kjsd65fs765df hjdsf js587 df sdkjf6f6f6f6f
6f6f6 6f f6 f6 6sdf

如果您使用的是 Java 8,则可以逐行流式传输文件并将每一行拆分为空字符串。然后您可以检查每个子字符串(一个字符)是否为整数。如果是,请将其添加到您的 ArrayList nums,如果您愿意,可以在完成后将其转换为数组。如果是空格或字符串 - 什么也不做。

现在您可以随意使用 nums 数组处理您的逻辑。

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;

public class Test {
    static ArrayList<Integer> nums = new ArrayList<Integer>();

    public static void main(String[] args) throws IOException {
        Files.lines(new File("yourFilePath/file.txt").toPath())
            .forEach(l -> addToMyArray(l.split("")));

        System.out.println(nums);
    }

    public static void addToMyArray(String[] arr) {
        for (String s : arr) {
            try {
                nums.add(Integer.parseInt(s));
            } catch(NumberFormatException e) {
                // do nothing
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 2014-09-20
    • 2016-05-22
    • 2017-09-04
    • 2013-12-09
    • 1970-01-01
    • 2017-04-14
    • 2018-10-03
    相关资源
    最近更新 更多