我在将我从文件中读取的字符串转换为多维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数组,即result [0] = 5和results [1] = 5
感谢您的任何建议。
最佳答案
这是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]]