我正在写一个txt文件,其中包含3位数字(x,y,z),其中x是行,y是列,z是数独网格的值。
我设法写了我的txt文件,其中每3行有一个数字。第1行= x,第2行= y,第3行= z,然后第4行= x,第5行= y,依此类推...
我在编写读取txt文件的代码部分时遇到麻烦,然后在控制台上的正确坐标处打印我的值。
我确定我的代码中有很多错误。这是我在控制台上打印的方法:
static void imprimerGrille()
{
try
{
BufferedReader lectureTexte = new BufferedReader(new FileReader("partie.txt"));
String ligne = lectureTexte.readLine();
int count = 0;
while ((ligne = lectureTexte.readLine()) != null){
for (int i=0; i<grilleSudoku.length; i++){
System.out.print("\n");
if (i%3 == 0)
System.out.println();
for (int j=0; j<grilleSudoku.length; j++){
if (j%3 == 0)
System.out.print(" ");
if (count%3 == 0){
//This would be the value I want in line, column coordinate
}
else if (count%3 == 1){
//This is my line coordinate
}
else if (count%3 == 2){ //colonne
//This is my column coordinate
}
}
}
count++;
if (count == 3){
count = 0;
}
}
} catch(Exception ex){
System.out.println("Fichier inexistant");
}
}
我在这里使用此代码来打印我的数独网格的布局(其值为0)。我只是在将它与BufferedReader部件合并时遇到问题。
/*for (int i=0; i<grilleSudoku.length; i++){
System.out.print("\n");
if (i%3 == 0) System.out.println();
for (int j=0; j<grilleSudoku.length; j++){
if (j%3 == 0) System.out.print(" ");
for (int x = 0; x<9; x++){
if (grilleSudoku[i][j] == x) System.out.print(x);
}
}
} */
答案 0 :(得分:0)
使用给定的txt结构,您可以执行以下操作
int[][] sudoku = new int[3][3];
try (BufferedReader br = new BufferedReader(new FileReader("<your-input-file>"))) {
String line;
int i = 1;
int row = 0;
int column = 0;
while ((line = br.readLine()) != null) {
if (i++ % 3 == 0) {
sudoku[row][column++] = Integer.parseInt(line);
if (column % 3 == 0) {
++row;
column = 0;
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(String.format("%d ", sudoku[i][j]));
}
System.out.println();
}
我建议将您的txt更改为以下格式(不是有效的数独):
1,2,3
4,5,6
7,8,9
编写更清晰的代码,可读的输入很有好处,如果要将网格更改为4x4,则只需更改输入文件和2维数组。 (如果使用ArrayList,则只需修改文件)
int[][] sudoku = new int[3][3];
try (BufferedReader br = new BufferedReader(new FileReader("<your-input-file>"))) {
String line;
int row = 0;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(",");
for (int column = 0; column < splitted.length; column++) {
sudoku[row][column] = Integer.parseInt(splitted[column]);
}
row++;
}
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(String.format("%d ", sudoku[i][j]));
}
System.out.println();
}