java продолжайте проверять исходный массив в конструкторе после того, как я добавлю элемент в ссылочный массив - PullRequest
0 голосов
/ 08 декабря 2018

Я использовал 2D-массив для создания игры sudokuPuzzle, но после того, как пользователь ввел значение, компилятор продолжает проверять исходный массив в конструкторе!

public void addInitial(int row, int column, int value) {

    for (int i = 0; i < board.length; i++) {

        if (board[i][column] == value || board[row][i] == value || board[row][column] != 0) {
            //first condition to check the place itself. Second condition to check the rows, third for columns. fourth to check if the given row and column is a blank space (0)
            //not solved correctly yet
            System.out.println("Wrong value, try again!");
            break;

        }
        if (board[i][column] != value || board[row][i] != value || board[row][column] == 0) {
            board[row][column] = value;
            System.out.println(value + " has been added");

            break;
        }
    }
}


public class Sudoku {
    public static void main (String[] args) {
        Scanner input = new Scanner(System.in);

        SudokuPuzzle game = new SudokuPuzzle();
        int i = 0;
        do{
            System.out.println(game);
            i++;
            System.out.println("Enter row, column, and value");
            System.out.print("Row: ");
            int r = input.nextInt() - 1;
            System.out.print("Column: ");
            int c = input.nextInt() - 1;
            System.out.print("Value: ");
            int v = input.nextInt();
            game.addInitial(r, c, v);

        }while(i < 3); // the loop is just to try 3 values
    }
}

Я не хочу, чтобы пользователь вводил два одинаковыхзначения друг над другом или рядом друг с другом, но компилятор позволяет это, потому что он продолжает проверять исходный массив в конструкторе.

1 Ответ

0 голосов
/ 09 декабря 2018

Я немного озадачен тем, что вы подразумеваете под «исходным массивом», поскольку вы не предоставили объяснения этому, но, похоже, у вас возникла проблема, когда ваша программа анализирует плату / массив, которыйты не хочешь это проверять.В любом случае, основываясь на предоставленном вами коде, я попытаюсь это сделать.

Я думаю, что ваша проблема может быть связана с тем, что вы, кажется, редактируете ту же доску, на которую ссылаетесьПосмотрите, является ли ответ правильным в первую очередь.Я бы посоветовал вам использовать две разные доски: одну, которая сначала заполняется всеми правильными ответами (и скрыта от игрока), а затем вторую доску, которая будет заполнена игроком в течение игры.,Таким образом, в вашей реализации вы берете значения, указанные игроком в main, а затем проверяете заполненную доску «answer», а затем, если предположение игрока соответствует значению на доске, вы вводите это значение в доску игрока.

Если на самом деле это был не ваш вопрос, я извиняюсь и удалю свой ответ, но, поскольку вы не предоставили достаточной информации, я подумала, что мне нужно на это ответить.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...