중복 요소에 대해 스도쿠 행을 확인하려고 할 때 결과로 아무것도 반환되지 않습니다. 코드가 올바른지 여부를 모릅니다. 중복 요소가 행에서 발견되면 반복을 인쇄해야합니다. 방법을 사용하여 해결책에 도달하도록 도와주세요 checkRow()
.
public class Sudoku {
public static void main(String... args) throws Exception
{
Scanner scanner = new Scanner(System.in);
int[][] sudokuPuzzle = {
{8, 1, 0, 0, 0, 0, 0, 3, 9},
{0, 0, 0, 9, 0, 1, 0, 0, 0},
{3, 0, 5, 0, 0, 0, 4, 0, 1},
{0, 0, 9, 8, 0, 2, 7, 0, 0},
{0, 0, 0, 5, 0, 6, 0, 0, 0},
{0, 0, 4, 3, 0, 7, 1, 0, 0},
{1, 0, 8, 0, 0, 0, 9, 0, 2},
{0, 0, 0, 6, 0, 4, 0, 0, 0},
{2, 4, 0, 0, 0, 0, 0, 6, 5}
};
printSudoku(sudokuPuzzle);
int count = countCellsToFill(sudokuPuzzle);
System.out.println("Number of cells have to filled: " + count);
}
public static void printSudoku(int[][] sudokuPuzzle)
{
for (int i = 0; i < sudokuPuzzle.length; i++)
{
if (i == 3 || i == 6)
System.out.println("------------------------");
for (int j = 0; j < sudokuPuzzle[i].length; j++)
{
System.out.format("%-2s", sudokuPuzzle[i][j]);
if (j == 2 || j == 5 )
System.out.print(" | ");
}
System.out.println();
}
}
public static int countCellsToFill(int[][] sudokuPuzzle){
int count=0;
for(int[] sudokuPuzzle1 : sudokuPuzzle){
for(int a: sudokuPuzzle1){
if(a == 0){
count++;
}
}
}
return count;
}
public boolean checkRow(int[] sudokuPuzzle){
for (int row = 0; row < sudokuPuzzle.length; row++)
{
int num = sudokuPuzzle[row];
if (num == sudokuPuzzle[row])
{
return true;
}
}
return false;
}
}
중복을 확인하기 위해 checkRow 메소드를 수정했습니다.
public boolean checkRow(int[] sudokuPuzzle) {
for (int row = 0; row < sudokuPuzzle.length; row++) {
for (int i = 0; i < sudokuPuzzle.length; i++) {
if (i == row) {
continue;
}
if (sudokuPuzzle[i] == sudokuPuzzle[row]) {
return true;
}
}
}
return false;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다