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