[英]Java Sudoku Solver Output
我的數獨解算器遇到一些問題,我應該做的是創建一個程序,檢查所輸入的數獨謎題是否正確。 我有檢查每個行,列和“迷你盒”是否正常工作的代碼。 我現在唯一的問題是打印拼圖。 這是我到目前為止的內容:
public String printGrid(int size, int[][] puzzle){
double temp = Math.sqrt(size);
for(int row = 0; row < size; row++){
for(int column = 0; column < size; column++){
System.out.print(puzzle[row][column]);
if(column == temp - 1) {
System.out.print("|");
}
if(row == temp - 1){
for(int i = 0; i < size; i++){
System.out.print("-\t");
}
}
if(column == size - 1) {
column = 0;
row++;
}
}
}
return "Correct!";
}
例如,大小將為4,而輸入的數獨將為:
1 2 3 4
4 3 2 1
3 4 1 2
2 1 4 3
我的輸出看起來像這樣:
1 2 | 3 4
4 3 | 2 1
----+----
3 4 | 1 2
2 1 | 4 3
但是我當前的代碼給出了ArrayOutOfBounds錯誤並輸出:
- 2- - - - 1- - - - 4|121|43
我完全不知道如何編寫這種輸出方法,有人可以幫我一下嗎? (也忽略所有sudokus都返回“正確!”的事實,我應該能夠弄清楚這一點。)
if(column == size - 1) {
column = 0;
row++;
}
使用上面的if-statement
,您不會讓內部循環terminated
,因為每次column
值到達死角時,您都resetting
其resetting
為0
,因此內部循環的終止條件(column < size)
將始終為true,並且您還在連續增加row
值,這將逐漸導致ArrayIndexOutOfBounds
。
只是刪除if
條件。 不需要。
您立即至少遇到了4個問題:
row
)循環的末尾打印換行符 if(row == temp - 1)
循環應僅在外部循環中(您要在它自己的行上進行,而不是每次在列中進行一次 column == temp-1
等。僅適用於2x2情況,它應為column > 0 && column % temp == 0
for
循環內部修改for
循環變量,這會混淆所有內容,並且通常會導致ArrayIndexOutOfBoundsException
,就像這里發生的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.