У меня есть программа, которую я пытаюсь проверить, является ли головоломка судоку действительной или нет. Есть только три ошибки, и это операторы возврата. У меня также есть проблемы с тем, чтобы каждый метод мог изменять логические строки, столбцы и разделы на true / false в зависимости от чисел.
//-----------------------------------------------------------
// Sudoku Puzzle lab
//
// This is a start to you Sudoku puzzle program. Use this
// 2D array to work with. Change the values in array, to
// test it thoroughly.
//-----------------------------------------------------------
import java.util.Arrays;
import java.util.Scanner;
import java.lang.Math;
public class Lab5_ValidateSudokuPuzzle{
// Method will check if rows are valid.
public boolean validateRows(int puzzle[][], boolean rows){
for(int row = 0; row < 9; row++)
for(int col = 0; col < 8; col++)
for(int col2 = col + 1; col2 < 9; col2++){
if(puzzle[row][col] == puzzle[row][col2]) {
rows = false;
return rows;
}
else{
rows = true;
return rows;
}
}
return puzzle[][];
}
// Method will check if colums are valid
public boolean validateCols(int puzzle[][], boolean colums){
for(int col = 0; col < 9; col++)
for(int row = 0; row < 8; row++)
for(int row2 = row + 1; row2 < 9; row2++){
if(puzzle[row][col] == puzzle[row2][col]) {
colums = false;
return colums;
}
else{
colums = true;
return colums;
}
}
return puzzle[][];
}
// Will check each section is valid
public boolean validateSections(int puzzle[][], boolean sections){
for(int row = 0; row < 9; row += 3)
for(int col = 0; col < 9; col += 3)
// Row, Col is start of 3x3 grid
for(int pos = 0; pos < 8; pos++){
for(int pos2 = pos + 1; pos2 < 9; pos2++) {
if(puzzle[row + pos%3][col + pos/3] == puzzle[row + pos2%3][col + pos2%3]){
sections = false;
return sections;
}
else{
sections = true;
return sections;
}
}
}
return puzzle[][];
}
public static void main(String[] args){
final int VALID_NUMBER = 111111111;
boolean isValid = false;
boolean rows = false;
boolean colums = false;
boolean sections = false;
// Hard Coded sudoku puzzle
int puzzle[][] =
{
{ 1, 2, 3, 4, 5, 6, 7, 8, 9 },
{ 4, 5, 6, 7, 8, 9, 1, 2, 3 },
{ 7, 8, 9, 1, 2, 3, 4, 5, 6 },
{ 2, 3, 4, 5, 6, 7, 8, 9, 1 },
{ 5, 6, 7, 8, 9, 1, 2, 3, 4 },
{ 8, 9, 1, 2, 3, 4, 5, 6, 7 },
{ 3, 4, 5, 6, 7, 8, 9, 1, 2 },
{ 6, 7, 8, 9, 1, 2, 3, 4, 5 },
{ 9, 1, 2, 3, 4, 5, 6, 7, 8 }
};
validateRows();
validateColums();
validateSections();
// Sudoku puzzle is true and will convert isValid to true.
if(rows == true && colums == true && sections == true)
isValid = true;
// Sudoku puzzle is false
if (rows == false || colums == false || sections == false)
System.out.println("The following sudoku puzzle is not valid.");
// Puzzle Solution is valid!
if(isValid == true)
System.out.println("The following sudoku puzzle is valid!");
}
}