Почему моя матрица не работает должным образом Java? - PullRequest
0 голосов
/ 26 ноября 2018

Ниже мой матричный код, я хочу заполнить пробелы уникальными числами.Но я не могу понять, почему это не работает.Я пытался идти шаг за шагом, но я не могу понять, где я допустил ошибку.Итак, дело в том, что у меня есть заданная матрица 9 × 9 с некоторыми числами, и я хочу дополнить оставшуюся часть уникальными числами, чтобы в каждой строке и столбце были все числа от 1 до 9, но разные на каждомколонка ряд.Пожалуйста, помогите мне, спасибо!

package com.javagement;

import java.util.Random;

public class Main {

    public static void main(String[] args) {

        int[][] matriceBuni = new int[9][9];

        for(int i = 0; i < 9; i++){
            for(int j = 0; j < 9; j++){
                matriceBuni[i][j] = 0;
            }
        }

        matriceBuni[0][0] = 8;
        matriceBuni[0][4] = 6;
        matriceBuni[0][8] = 4;
        matriceBuni[1][2] = 7;
        matriceBuni[1][4] = 3;
        matriceBuni[1][8] = 5;
        matriceBuni[2][0] = 3;
        matriceBuni[2][1] = 9;
        matriceBuni[2][5] = 5;
        matriceBuni[2][7] = 8;
        matriceBuni[3][2] = 8;
        matriceBuni[3][3] = 6;
        matriceBuni[3][6] = 7;
        matriceBuni[3][7] = 5;
        matriceBuni[4][2] = 5;
        matriceBuni[4][3] = 8;
        matriceBuni[4][7] = 9;
        matriceBuni[5][1] = 6;
        matriceBuni[5][2] = 3;
        matriceBuni[5][5] = 7;
        matriceBuni[5][6] = 4;
        matriceBuni[6][0] = 7;
        matriceBuni[6][1] = 3;
        matriceBuni[6][3] = 2;
        matriceBuni[6][5] = 9;
        matriceBuni[7][0] = 1;
        matriceBuni[7][1] = 8;
        matriceBuni[7][7] = 5;
        matriceBuni[7][8] = 9;
        matriceBuni[8][4] = 8;
        matriceBuni[8][5] = 1;
        matriceBuni[8][6] = 2;

        for(int m = 0; m < 9; m++) {
            for(int n = 0; n < 9; n++) {
                System.out.print(matriceBuni[m][n] + " ");
            }
            System.out.println();
        }

        System.out.println("*****************************************");



        for(int r = 0; r < 9; r++) {
            for(int c = 0; c < 9; c++) {
                if(matriceBuni[r][c] == 0) {
                    boolean isUnique = false;
                    while(!isUnique) {
                        int uniqueNumber = getRandomNumberInRange(1,9);
                        int countUnique = 0;
                        for(int a = 0; a < 9; a++) {
                            if (matriceBuni[r][a] == uniqueNumber) {
                                countUnique++;
                            }
                        }
                         for(int b = 0; b < 9; b++) {
                             if (matriceBuni[b][c] == uniqueNumber) {
                                 countUnique++;
                             }
                         }
                        if (countUnique == 0) {
                            isUnique = true;
                            matriceBuni[r][c] = uniqueNumber;
                        }
                    }
                }
            }
        }



        for(int m = 0; m < 9; m++) {
            for (int n = 0; n < 9; n++) {
                System.out.print(matriceBuni[m][n] + " ");
            }
            System.out.println();
        }
    }


    private static int getRandomNumberInRange(int min, int max) {

        Random r = new Random();
        return r.nextInt((max - min) + 1) + min;
    }

}
...