Olá pessoal, preciso de ajuda com um código meu. Estou tentando gerar uma matriz 9x9 com todos os números preenchidos (aleatoriamente) de acordo com as regras do Sudoku. Porém o programa “se executa” infinitas vezes e não gera resultado! Aí está o código:
[code]import java.util.Random;
public class Projeto4 {
public static void main (String[]args) {
int[][] M = new int [10][10];
boolean[][] P = new boolean [10][10];
int numeroSorteado;
int cont = 0;
String saida = “”;
boolean permissao = true;
Random Sorteio = new Random();
//Atribui número somente à primeira linha e primeira coluna, sem repetição.
for (int c = 1; c <= 9; c++) {
numeroSorteado = Sorteio.nextInt(9) + 1;
M[1][c] = numeroSorteado;
for (int k = 1; k < c; k++) {
if (M[1][c] == M[1][k]) {
numeroSorteado = Sorteio.nextInt(9) + 1;
M[1][c] = numeroSorteado;
k = 0;
}
}
}
//Erro está neste bloco de execuções:
for (int i = 2; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
numeroSorteado = Sorteio.nextInt(9) + 1;
M[i][j] = numeroSorteado;
for (int t = 1; t < i; t++) {
if (M[i][j] == M[t][j]) {
numeroSorteado = Sorteio.nextInt(9) + 1;
M[i][j] = numeroSorteado;
t = 0;
}
}
}
}
for (int m = 2; m <= 9; m++) {
for (int n = 2; n <= 9; n++) {
do {
permissao = true;
numeroSorteado = Sorteio.nextInt(9) + 1;
M[m][n] = numeroSorteado;
for (int f = 1; f < m; f++) {
if (M[m][n] == M[m][f]) {
permissao = false;
break;
}
}
for (int g = 1; g < n; g++) {
if (M[m][n] == M[g][n]) {
permissao = false;
break;
}
}
System.out.print(M[m][n]);
} while (permissao != true);
}
}
for (int h = 1; h <= 9; h++) {
for (int x = 1; x <= 9; x++) {
saida += (M[h][x] + " ");
}
saida += ("\n");
}
System.out.print (saida);
}
}
[/code]
Obrigado por ajudarem!