将文件拆分为数组

时间:2015-08-26 02:16:25

标签: java arrays

请帮我解决这个问题,我试图解决这个问题,我已经坚持了几个小时。

问题:从文本文件中读取数据。数据文件的结构:

  • 它将拥有多组数据
  • 数据集由空行分隔
  • 每个数据集包含一定数量的正整数

任务:我想编写一个Java程序来读取用户提供的数据文件,并将每个数据集存储在单独的数组中。我还希望将每个数组的大小显示为输出,然后按排序顺序显示相应的数据集(增加数字的顺序)。我想使用Arrays.sort(int[ ])方法对每个数组进行排序。我已经把文件读完了。

任何帮助将不胜感激!!!我不认为我正在编写方法将它们放入数组并正确计算项目数。

以下是我如何处理此文件的代码。

while(inFile.hasNext()){
       String line = inFile.nextLine();
       String[] lineArray = line.split("\\s+");
       list.add(line);
       Arrays.sort(lineArray);
       System.out.println("Total number of elements in array : " + lineArray.length );
       String a = Arrays.toString(lineArray);
       System.out.println(a.substring(1, a.length() - 1));

2 个答案:

答案 0 :(得分:0)

您可以首先将整个文件读入List Files.readAllLines(Path)。然后,您需要将String[] lineArray转换为int[]Integer.parseInt(String)String转换为int。这可能看起来像

public static void main(String[] args) throws IOException {
    String home = System.getProperty("user.home");
    Path filePath = Paths.get(home, "file.txt");
    List<String> lines = Files.readAllLines(filePath);
    for (String line : lines) {
        String[] lineArray = line.split("\\s+");
        System.out.println("Total number of elements in array : "
                + lineArray.length);
        int[] arr = new int[lineArray.length];
        for (int i = 0; i < lineArray.length; i++) {
            arr[i] = Integer.parseInt(lineArray[i]);
        }
        Arrays.sort(arr);
        String a = Arrays.toString(arr);
        System.out.println(a.substring(1, a.length() - 1));
    }
}

答案 1 :(得分:0)

Java8 中,您可以使用 stream 来简化代码:

public static void main(String[] args) throws IOException {
    Files.lines(Paths.get("./myinputFile.txt"))
            .map(l -> Arrays.stream(l.split("\\s+")).map(Integer::parseInt))
            .map(Stream::sorted)
            .forEach(t -> {
                t.forEach(v -> System.out.print(v + " "));
                System.out.println();
            });
}