Validação de Matriz - Número já digitado

3 respostas
R

Bom dia pessoal,

preciso fazer a validação de um número já digitado na matriz, ou seja, se o usuário tentar digitar um número que já consta na matriz, o programa retornará uma mensagem do tipo: “número já digitado, informe outro número”

Meu condigo é esse, refere-se a um quadrado mágico:

int n,i,j;

System.out.println("Digite o tamanho do quadrado: ");
	n = get.nextInt();
	
	int quadrado[][] = new int[n][n];
	
	System.out.println("Digite os valores do Quadrado: ");
	for (i=0;i<n;i++) {
		for (j=0;j<n;j++) {
			
			do {
				quadrado[i][j] = get.nextInt();
				if (quadrado[i][j] < 1 || quadrado[i][j] > 9)
					System.out.println("número inválido");
			}while (quadrado[i][j] < 1 || quadrado[i][j] > 9);
			
				
		}
	}

Eu coloquei a validação de números menor que 1 e maior que 9, agora preciso da validação de um número ja presente no vetor.

Aguem pode me ajudar???

Muito obrigado.

3 Respostas

A

Você pode criar um método para rodar esse Array para comparar o valor digitado pelo usuário com os já cadastrados e retorna um booleano.

R

Eu não sei fazer isso , vc pode me mostrar ?

siabreu

Olá Rafael, antes de armazenar o valor na matriz, verifique se é um número válido e verifique se já não existe na matriz. Somente após as verificações, armazene na matriz.
Fiz um exemplo que pode te ajudar:

int n, i, j, valor, k, l;
        boolean existe = false;
        System.out.println("Digite o tamanho do quadrado: ");
        n = get.nextInt();

        int quadrado[][] = new int[n][n];

        System.out.println("Digite os valores do Quadrado: "); 
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                do {
                    valor = get.nextInt();
                    if (valor < 1 || valor > 9) {
                        System.out.println("número inválido");
                    }
                } while (valor < 1 || valor > 9);
                //o número é válido

                //percorre a matriz e verifica se o número existe nela
                for (k = 0; k < n; k++) {
                    for (l = 0; l < n; l++) {
                        if (valor == quadrado[k][l]) {
                            existe = true;
                            //encerra o laço da pesquisa
                            l = n;
                            k = n;                            
                        }
                    }
                }
                //se não existir armazena
                if (!existe) {
                    quadrado[i][j] = valor;                    
                    System.out.println("quadrado[" + i + "][" + j + "] = " + quadrado[i][j]);                    
                } else {
                    //se existir muda o valor do boolean existe e decrementa o j
                    existe = false;
                    System.out.println("número já cadastrado!!");                    
                    j--;                    
                }
            }//for j
        }//for i

Quer aprender mais sobre programação? Acesse meu canal SiAbreu Tec

Criado 18 de novembro de 2017
Ultima resposta 18 de nov. de 2017
Respostas 3
Participantes 3