从文件中读取输入

时间:2016-03-08 21:10:11

标签: java arrays input

如何从文件中读取输入并将其保存到数组中? 例如,该文件包含:

2

1 1 2 3

2 4 5

其中第一个数字(2)表示需要的数组数。 第二行中的第一个数字是数组ID,后跟数组中的任何数字(1 2 3)。对于第三行也是如此,因此数组2应包含4和5。

所以两个数组应该是:

array1:[1] [2] [3] array2:[4] [5]

请Java!谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将所有数字存储在int数组的数组中:

public static void main(String[] args) {

    try (BufferedReader reader = new BufferedReader(new FileReader("c:\\temp\\text.txt"))) {

        int numberOfArrays = Integer.parseInt(reader.readLine());
        int[][] arrays = new int[numberOfArrays][];

        int i = 0;

        while (i < numberOfArrays) {
            String line = reader.readLine();

            if (line.isEmpty()) {
                continue;
            }

            String[] parts = line.split(" ");
            int[] lineNumbers = new int[parts.length - 1];

            // is "array id" really necessary? i am just ignoring it.

            for (int j = 0; j < lineNumbers.length; j++) {
                lineNumbers[j] = Integer.parseInt(parts[j + 1]);
            }

            arrays[i++] = lineNumbers;
        }

    } catch (IOException e) {
        throw new RuntimeException(e);
    }

}

答案 1 :(得分:0)

我建议使用java8。读取文件的所有行变得容易。转换等可以通过流轻松解决。

未经测试的示例代码:

private static int[][] read() {
    Path path = Paths.get("c:/temp", "data.txt");
    try (Stream<String> lines = Files.lines(path)) {
        return lines

            // remove first line
            .skip(1)

            // convert line to array
            .map(l -> l.split("  "))

            // remove first colum
            .map(a - > Arrays.copyOfRange(a, 1, a.length))

            // convert to array
           . collect(Collectors.toArray());
    }
}