Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,vim aqui pedir ajuda para resolver um probleminha.
Eu estou aprendendo a mexer com pilhas,e preciso saber se um determinado valor foi empilhado,porém não estou conseguindo fazer isso.Tenho certeza que ele foi empilhado,pois na depuração eu vejo que ele esta la no vetor,eu fiz um laço para percorrer toda a pilha,se em algum momento ele achar o valor la uma variável booleana iniciada como false passa a ser true,e no final do laço fiz uma condicional que se a variável for true enviar uma mensagem que o valor foi encontrado na pilha,se não dizer que o valor não foi encontrado,o problema é que essa variável sempre retorna true.
Por motivos de simplicidade,to testando com apenas um valor na pilha,no caso é testado com o elemento 0 do vetor,eu empilho o numero 5 na primeira posição da pilha,depois na consulta digito 8,e ele retorna true.
Alguem pode me dar uma ajuda?
if (! pilha.vazia()){ // testa se a pilha esta vazia antes de consultar
num = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero"));//pede o numero a ser buscado
for (int j = pilha.topo;j>=0;j--){//laço para percorrer toda a pilha,começando do topo até o primeiro elemento
if (num == pilha.vetor[j]){//vetor é o nome do vetor onde os dados são empilhados
ok = true;//se o numero digitado na consulta for encontrado na pilha,deve retornar true,o problema é que sempre retorna true
break;
}
else
ok=false;//se o numero não estiver na pilha retornar false
}
if (ok = true){
System.out.println("Numero encontrado");//Deveria enviar essa mensagem apenas quando o numero fosse encontrado
}Carregando comentários...