Ajuda com vetor. [RESOLVIDO]

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;
					}

Qual o problema, mais especificamente?

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.");
				}

[quote=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."); } [/quote]

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.

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

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:

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!

[quote=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![/quote]

Legal colega!

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

:wink: