我当前正在制作数独程序,但是我当前的代码似乎使我失败了。如果一行多次包含相同的数字,则下面的脚本应打印出“不一致的数独谜题”,但遗憾的是它没有..我尝试了几次尝试,但都没有成功。
public void checkRow() {
int count = 0;
for(int j = 0; j < list.size(); j++) {
for(int a = 1; a < 10; a++) {
for (int i=0; i < list.get(j).length(); i++) {
if(list.get(j).charAt(i) == a) {
count++;
if(count >= 2) {
System.out.println("Inconsistent sudoku puzzle");
count = 0;
}
}
}
count = 0;
}
}
}
这是我所有错误检查的集合:
public void errorCheck() {
this.checkRow();
this.checkColumn();
this.checkBox();
}
我在这里将其加载到我的主机中。该代码更加详尽,但是应该是涉及该问题的部分。
public static void main(String[] args) throws Exception {
Sudoku s = new Sudoku("C:\\Users\\caspe\\Downloads\\Sudoku001.sdk");
s.printBoard();
s.errorCheck();
s.getNum();
while(getNum() > 0) {
System.out.println("Next move, please (row , column , value )");
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int column = scanner.nextInt() ;
int value = scanner.nextInt();
if (s.moves(row, column, value)); {
s.errorCheck();
}
s.printBoard();
}
}
答案 0 :(得分:2)
您正在使用charAt
,并尝试将其结果与数字进行比较:
list.get(j).charAt(i) == a
但是,您正在将字符的ascii值与数字进行比较。
示例:
String a = "3";
System.out.println((int) a.charAt(0)); // This prints 51
如果要比较数字值,则必须执行以下操作:
String a = "3";
System.out.println(Character.getNumericValue(a.charAt(0))); // This prints 3
Character.getNumericValue(a.charAt(0))
返回字符的数字值。
在您的代码中实现如下所示:
Character.getNumericValue(list.get(j).charAt(i)) == a
答案 1 :(得分:1)
此行:
if(list.get(j).charAt(i) == a)
始终为false
,因为您将char
与int
进行了比较。
替换为
if((list.get(j).charAt(i)-'0') == a)
list.get(j).charAt(i)-'0'
为您提供字符的数字表示形式
答案 2 :(得分:1)
问题是: 'if(list.get(j).charAt(i)== a)'
与ascii表上的“ a”值进行比较