Возникли проблемы с оператором return с массивом судоку - PullRequest
0 голосов
/ 21 октября 2019

У меня есть программа, которую я пытаюсь проверить, является ли головоломка судоку действительной или нет. Есть только три ошибки, и это операторы возврата. У меня также есть проблемы с тем, чтобы каждый метод мог изменять логические строки, столбцы и разделы на 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!");
}

}

...