Ajuda com vetor. [RESOLVIDO]

7 respostas
Fanpix

Estou com um problema no código abaixo e gostaria de uma ajuda.
Acompanhando com o debug, esse código está comparando a variável localizaValor com a posição do vetor que está sendo percorrida no momento, trocando o status da variável achou quando não é igual a esse valor.

if (opcao == 1) {
				System.out.print("Valor a ser pesquisado: ");
				localizaValor = sc.nextInt();
				for (i = 0; i < valor.length; i++) {
					if (localizaValor == valor[i]) {
						achou = true;
					} else {
						achou = false;
					}

7 Respostas

asousaj

Qual o problema, mais especificamente?

Fanpix

Toda vez que é realizado o loop, o eclipse está comparando a variável localizaValor com a posição atual do vetor e mesmo se a comparação for true, ele está retornando como false. Como o eclipse já deu uns bugs estranhos, eu queria saber se o código está certo ou não.

if (opcao == 1) {
				System.out.print("Valor a ser pesquisado: ");
				localizaValor = sc.nextInt();
				for (i = 0; i < valor.length; i++) {
					if (localizaValor == valor[i]) {
						achou = true;
					} else {
						achou = false;
					}
				} if (achou == true) {
					System.out.println("Valor cadastrado!");
				} else {
					System.out.println("Valor não cadastrado.");
				}
Ruttmann

Fanpix:
Toda vez que é realizado o loop, o eclipse está comparando a variável localizaValor com a posição atual do vetor e mesmo se a comparação for true, ele está retornando como false. Como o eclipse já deu uns bugs estranhos, eu queria saber se o código está certo ou não.

if (opcao == 1) { System.out.print("Valor a ser pesquisado: "); localizaValor = sc.nextInt(); for (i = 0; i < valor.length; i++) { if (localizaValor == valor[i]) { achou = true; } else { achou = false; } } if (achou == true) { System.out.println("Valor cadastrado!"); } else { System.out.println("Valor não cadastrado."); }

Do jeito que esse código está escrito, você vai receber sempre o boolean da última posição do array. Tem que implementar alguma condição de parada, pra quando encontrar uma correspondência, retorná-la.

Fanpix

Ruttmann, realmente não estou conseguindo fazer isso. Você poderia me dar um exemplo?

Ruttmann

O que vc pode fazer é o seguinte:

Inicializa sua variável achou com false antes do for. Aí dentro do for você só deixa isso aqui:

if (localizaValor == valor[i]) { achou = true; }

Entendeu? Ele só vai setar acho = true se encontrar valor correspondente. Senão vai continuar com o false.

Essa não é a solução mais performática, mas como exercício inicial, pra quem ainda tá aprendendo já serve! :wink:

Fanpix

Ruttmann, valeu pela ajuda.

A variável já estava sendo inicializada como false, mas junto com as outras variáveis globais.
Declarei ela na execução da opção como false e o problema acabou.

Obrigadão mesmo!

Ruttmann

Fanpix:
Ruttmann, valeu pela ajuda.

A variável já estava sendo inicializada como false, mas junto com as outras variáveis globais.
Declarei ela na execução da opção como false e o problema acabou.

Obrigadão mesmo!

Legal colega!

Só marque o o título do post com [RESOLVIDO] no final ou começo.

:wink:

Criado 27 de novembro de 2013
Ultima resposta 28 de nov. de 2013
Respostas 7
Participantes 3