Eu preciso pesquisar o código de um item em uma pilha, mas só estou conseguindo o retorno do resultado se o elemento estiver no topo.
Como eu faço para encontrar o elemento em qualquer posição da pilha?
Segue o código.
if (vOpcao == 2) { //Pesquisar por RA
int Inicio = Topo;
if (Topo == -1) { //verifica se a pilha está vazia
System.out.println("Pilha vazia");
} else {
System.out.print("RA: ");
Inicio = sc.nextInt();
if (vetAlunos[Topo].Ra == Inicio) {
System.out.println("RA CADASTRADO");
System.out.println("RA: " + vetAlunos[Topo].Ra);
System.out.println("Nome: " + vetAlunos[Topo].Nome);
System.out.println("Mensalidade: " + vetAlunos[Topo].Mensalidade);
for (Inicio = Topo; Inicio == Inicio - 1;) {
if (Inicio != vetAlunos[Topo].Ra) {
System.out.println("RA não localizado");
} else {
System.out.println("RA CADASTRADO");
System.out.println("RA: "+vetAlunos[Topo].Ra);
System.out.println("Nome: "+vetAlunos[Topo].Nome);
System.out.println("Mensalidade: "+vetAlunos[Topo].Mensalidade);
}
}
}
}
}
Me desculpe pela ignorância, mas como eu implemento no código?
Como te falei, estou com dificuldade de entender esse código e estou esquentando a cabeça faz tempo por causa disso.
Depois que entender como ele funciona sei que ficará fácil, mas esse ainda não é o meu caso.
Como assim? Você não quer saber se um elemento existe na pilha? É só verificar elemento a elemento se encontra o que quer.for(Aluno aluno : vetAlunos){
if(aluno.equals(elementoQueEuQuero){
System.out.println("Encontrei!");
}
}
Fiz assim e não deu certo. Pode me dizer onde estou errando?
else if (vOpcao == 2) { //Pesquisar por RA
int Inicio = Topo;
if (Topo == -1) { //verifica se a pilha está vazia
System.out.println("Pilha vazia");
} else {
System.out.print("RA: ");
int ra = sc.nextInt();
for (Aluno aluno : vetAlunos) {
if (aluno.equals(ra)) {
System.out.println("Elemento encontrado!");
System.out.println("RA CADASTRADO");
System.out.println("RA: "+vetAlunos[Inicio].Ra);
System.out.println("Nome: "+vetAlunos[Inicio].Nome);
System.out.println("Mensalidade: "+vetAlunos[Inicio].Mensalidade);
}
}
}
}
Ok, entendi, mas a minha dúvida está em como eu faço para comparar o valor busca.Ra com o valor aluno.RA, como no código abaixo.
else if (vOpcao == 2) { //Pesquisar por RA
int Inicio = Topo;
if (Topo == -1) { //verifica se a pilha está vazia
System.out.println("Pilha vazia");
} else {
Aluno busca = new Aluno();
System.out.print("RA: ");
busca.Ra = sc.nextInt();
for (Aluno aluno : vetAlunos) {
if (busca.Ra.equals(aluno.Ra)) { //Esse está errado, eu sei. Mas é aqui que estou apanhando
achou = true;
}
}