Metodo nao retorna quando pedido do teclado

tenho um metodo que faz uma busca em uma lista, dentro da classe de teste quando coloco assim:

CadaDia.buscaConsulta(“opa”);

o metodo me retorna o valor certo.
porém quando é pedido do teclado colocando o mesmo parametro o metodo retorna que nao existe dentro da lista, nao sei o que fazer nem pq esta dando isso

String nome = null;
nome = entrada.next();
CadaDia.buscaConsulta(nome);

Ainda não terminei de implementar o algoritmo BolaDeCristal, então posta o código do método para eu tentar ajudar.

2 curtidas

po, ainda nao terminou kkk
o metodo que chama é esse

 public static int buscaConsulta(String nome){
		Consulta c1 = new Consulta(nome, 0,0,0,0);
		if(consulta.search(c1) >= 0){
			System.out.print(consulta.get(consulta.search(c1)));
			return consulta.search(c1);
		}
		System.out.println("Essa consulta nao consta no sistema");
		return -1;
	}

e o search que o buscaConsulta chama é esse, de uma classe para fazer uma lista simplesmente encadeada:

public int search(E element) {
		// percorre o encadeamento até encontrar o elemento
		Node<E> current = head;
		int i = 0;
		while (current != null) {
			if (element.equals(current.getElement()))
					return i;
			i++;
			current = current.getNext();
		}
		
	        // se chegar até aqui, é porque não encontrou
		return -1;
	}

o equals foi sobrescrito na classe Consulta

public boolean equals(Object obj){
		if(this == obj)
			return true;
		if(obj == null)
			return false;
		if(getClass() != obj.getClass())
			return false;
		Consulta other = (Consulta) obj;
		if(nomeCliente != other.nomeCliente)
			return false;
		return true;
	}

Não tem sentido não localizar se for digitado, sendo que o valor é o mesmo. Já se certificou que o valor é exatamente o mesmo? Printa no console dentro do método.

Tem certeza que o ambiente onde testou foi exatamente igual para ambas as situações?

por isso nao entendi, tambem pensei a mesma coisa nao tem por que dar errado se o parametro é o mesmo
segue imagem
na primeira linha é a consulta

Ahhhh, não compare String com operadores:
if(nomeCliente != other.nomeCliente)
troque por:
if(!nomeCliente.equals(other.nomeCliente))
lá no seu equals

1 curtida

agora foi, nem tinha percebido isso, muito obrigado