satchii 0 Denunciar post Postado Outubro 16, 2009 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 } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Outubro 16, 2009 O problema está aqui: if (ok = true){ Comparação em Java é: "==". Como voce está atribuindo true para "ok" essa variável sempre será true. Compartilhar este post Link para o post Compartilhar em outros sites