将字符串转换为多维int数组

时间:2015-06-01 18:36:16

标签: java

我在将我正在从文件中读取的字符串转换为多维int数组时遇到轻微的麻烦,我发现我认为这些建议是here

请参阅此文件here了解字符串内容。

基本上我想替换CR和LF,以便创建一个多维的int数组。

根据我的代码,我可能会出错吗?

public static void fileRead(String fileContent) {
    String[] items = fileContent.replaceAll("\\r", " ").replaceAll("\\n", " ").split(" ");

    int[] results = new int[items.length];

    for (int i = 0; i < items.length; i++) {
        try {
            results[i] = Integer.parseInt(items[i]);

            System.out.println(results[i]);
        } catch (NumberFormatException nfe) {};
    }
}
编辑:我没有遇到任何错误。上述逻辑仅创建一个大小为2的int数组,即结果[0] = 5,结果[1] = 5

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

这是Java 8解决方案:

private static final Pattern WHITESPACE = Pattern.compile("\\s+");

public static int[][] convert(BufferedReader reader) {
    return reader.lines()
            .map(line -> WHITESPACE.splitAsStream(line)
                    .mapToInt(Integer::parseInt).toArray())
            .toArray(int[][]::new);
}

用法(当然你也可以从文件中读取):

int[][] array = convert(new BufferedReader(new StringReader("1 2 3\n4 5 6\n7 8 9")));
System.out.println(Arrays.deepToString(array)); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]