我正在编写代码,以检查数独板是否为获胜板。我将板作为文件读取并存储在字符串中。我正在通过该字符串读取,打印,然后检查棋盘是否是获胜棋盘的方法。它将打印是否存在。我坚持尝试将String转换为2d int数组,以便可以对其进行检查。
import java.util.*;
import java.io.*;
public class lab{
public static void main(String args[])throws Exception{
File file = new File("sudoku.txt");
readSudoku("C:\\Users\\offda\\Desktop\\CS2 Week 1\\sudoku.txt");
}
public static void readSudoku(String str)throws Exception{
Scanner sc = new Scanner(new File("C:\\Users\\offda\\Desktop\\CS2 Week 1\\sudoku.txt"));
try{
FileReader fileR = new FileReader("sudoku.txt");
BufferedReader br = new BufferedReader(fileR);
while((str=br.readLine())!=null){
printSudoku(str);
}
br.close();
}catch(IOException e){
System.out.println("Error loading board...");
}
}
public static void printSudoku(String str){
System.out.println(str);
//checkSudoku(str);
}
/*
public static boolean checkSudoku(int[][] str){
for(int i=0; i<str.length;i++){
int[] r= new int[9];
int[] s = new int[9];
int[] c = str[i].clone();
for(int j=0;j<str[i].length;j++){
r[j]=str[j][i];
s[j]=str[(i/3)*3+j/3][i*3%9+j%3];
}
if(!(validate(c)&&validate(r)&&validate(s))){
System.out.println("losing board!");
return false;
}
else{
System.out.println("winning board!");
}
}
return true;
}
public static boolean validate(int[] val){
int v=0;
Arrays.sort(val);
for(int n = 0;n<val.length;n++){
if(n!= v++){
return false;
}
}
return true;
}
*/
}
/*heres my board (txt):
4 8 3 9 2 1 6 5 7
9 6 7 3 4 5 8 2 1
2 5 1 8 7 6 4 9 3
5 4 8 1 3 2 9 7 6
7 2 9 5 6 4 1 3 8
1 3 6 7 9 8 2 4 5
3 7 2 6 8 9 5 1 4
8 1 4 2 5 3 7 6 9
6 9 5 4 1 7 3 8 2
*/
我将使用5个测试用例来运行此测试用例,每个用例都应打印整个电路板以及是否赢得数独。
答案 0 :(得分:0)
int x = 0;
int[][] sudoku = new int[9][9];
while((str=br.readLine())!=null){
printSudoku(str);
for (int y=0;y<9;y++) {
sudoku[x][y] = Character.getNumericValue(str.charAt(x*9+y));
}
x++;
}
此后,sudoku
变量将包含数独(假设您的文本文件包含9行,每行9个数字,中间没有空格或其他文本)。