![](/img/trans.png)
[英]Is there any way to convert string to 2d matrix in less than or equal to O(nlgn) time?
[英]Is there any way to write 2d matrix in file without using functions?
我想在 Java 中编写 10 个 2d 矩阵(它们是数独),但我只想将它们写入文件(手动),而不首先将它们包含在我的代码中,并在函数中使用它们来编写和读取它们从文件。 我希望你能理解我想说的话。
您可以按如下方式定义数独板
int[][] sudoku = {
{4, 2, 9, 8, 1, 3, 5, 6, 7},
{5, 1, 6, 4, 7, 2, 9, 3, 8},
{7, 8, 3, 6, 5, 9, 2, 4, 1},
{6, 7, 2, 1, 3, 4, 8, 5, 9},
{3, 9, 5, 2, 8, 6, 1, 7, 4},
{8, 4, 1, 7, 9, 5, 6, 2, 3},
{1, 5, 8, 3, 6, 7, 4, 9, 2},
{9, 3, 4, 5, 2, 8, 7, 1, 6},
{2, 6, 7, 9, 4, 1, 3, 8, 5},
};
您可以创建一个多维数组并使用 JSON 将其保存到文件中
{
"sudoku": [
[], [],
[], [],
[], [],
[], [],
[], [],
[], [],
[], []
]
}
如何创建一个二维数组
int[][] twoD_arr = new int[3][2];
我认为以下将做你想要的:
public static void main(String[] args) {
try {
int[][] grid1 = loadGrid(9, 9, "grid_1.txt");
printGrid(grid1);
} catch (Exception e) {
e.printStackTrace();
}
}
private static int[][] loadGrid(int width, int height, String filename) throws IOException {
int[][] res = new int[width][height];
int y = 0;
for (String line : Files.readAllLines(Paths.get(filename))) {
int x = 0;
for (String n : line.split("\\s+"))
res[y][x++] = Integer.parseInt(n);
++y;
}
return res;
}
private static void printGrid(int[][] grid) {
for (int[] row : grid) {
for (int n : row)
System.out.print(n + " ");
System.out.println();
}
}
重要的一点是在loadGrid
。 它使用readAllLines
从文本文件中获取行列表,然后在每行内将其拆分为正则表达式\\s+
,这意味着“任意数量的空格”。 这会产生一堆单独的字符串,您可以将它们转换回数字。
输入文件只是:
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 .... etc
请注意,这不能容忍源文件中的错误。 您将需要处理大小错误的文件、包含非数字文本的文件等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.