Metodo Pesquisa

15 respostas
evertonsilvagomesjav

Ola pessoal seguinte to com o seguinte metodo eu quero q o metodo me retorne usuario nao cadastrado quando nao houver o id cadastrado mais esta dando um erro pois mesmo com id cadastrado ele me exibi uma mensagem de usuario nao Cadastrado, me ajudem ae por favor....

public String pesquisaClientes(Long id){
		if( listaClientes[i] != null){
		 for(int i =0 ; listaClientes.length>i; i++ )
		 {
			 	if(listaClientes[i].getId()== id )
		JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 	
		 }
		
		 }
		else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return null;	
	 }

15 Respostas

evertonsilvagomesjav

ah outra coisa esse “return null” nem sei pra q serve so coloquei pq o metodo pediu kkk se alguem puder me falar ae vlww…

T

Se você não sabe por que colocou o null, então aproveite:
http://www.caelum.com.br/downloads/apostila/caelum-java-objetos-fj11.pdf

Mas o metodo que você fez tem um tipo de retorno String por isso tem que ter um retorno, se você não precisa do retorno, então altere seu método para:

public void pesquisaClientes(Long id)

De onde saiu a variável " i " ?

if( listaClientes[i] != null){
evertonsilvagomesjav

seguinte a minha variavel “i” é um contador , todo mundo fala o “return null” vai te retorna um valor nulo se puder me explicar mais claramente, igual o boolean retorna true e false mais eu queria saber se o return true vem da condiçao implementada se for verdadeira e o false se nao for verdadeiro…

evertonsilvagomesjav
public boolean pesquisaClientes(Long id){
		if( listaClientes[i] != null){
		 for(int i =0 ; listaClientes.length>i; i++ )
		 {
			 	if(listaClientes[i].getId()== id )
		JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 return true;	
		 }
		
		 }
		else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;	
	 }[code]

POR EXEMPLO ESSE CODIGO BOOLEAN EU QUERO SABER SE O RETURN TRUE TEM HAVER COM A MINHA CONDIÇAO AKI
if(listaClientes[i].getId()== id )
SE ELE VAI ME RETORNAR ISSO POR CAUSA DO TRUE
[code]JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
CrOnNoS

é que quando você tem como retorno um objeto, você pode retornar um objeto ou "nada", esse null equivale ao nada.
Ou seja, quando você não tiver um objeto String para retornar, você retorna "nada".

Sobre a primeira questão:
public String pesquisaClientes(Long id){  
        if( listaClientes[i] != null){  
         for(int i =0 ; listaClientes.length>i; i++ )  
         {  
                if(listaClientes[i].getId()== id )  
        JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);  // Esse IF não tem colchetes. Logo, ele executa a instrução logo após o if e o if acaba.
                  
         }  // Esse colchete está fechando o FOR
          
         }  // Esse colchete está fechando o primeiro IF
        else  
            JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");  
        return null;      
     }

seu primeiro IF é if( listaClientes[i] != null), ou seja, se NÃO tiver "nada" guardado na lista na posição "i", execute o que está dentro do if.
Como esse "i", pelo que me lembro do seu código, ele guarda a primeira posição do vetor SEM cliente, então esse IF SEMPRE retornara false e SEMPRE vai para o "else"

evertonsilvagomesjav

ESSE É O CODIGO CRONOS DE UMA OLHADA POR FAVOR EU QUERO FAZE UMA PESQUISA POR ID E retornar Cliente nao cadastrado se ao houver o cliente cadastrado porem ele me retorna cliente nao cadastrado mesmo com o cliente cadastrado..

public boolean pesquisaClientes(Long id){
		if( listaClientes[i] != null){
		 for(int i =0 ; listaClientes.length>i; i++ )
		 {
			 	if(listaClientes[i].getId()== id )
		JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 return true;	
		 }
		
		 }
		else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;	
	 }
L

Cara, não testei e não sei se entendi o seu problema, mas creio que esteja dando “Cliente não Cadastrado” mesmo quando ele encontra o cliente porque o ELSE que faz com que essa mensagem apareça pertence ao if( listaClientes[i] != null) e não ao if(listaClientes[i].getId()== id ).

Se você olhar o comentário que o CrOnNoS colocou na mensagem anterior você vai conseguir entender.

evertonsilvagomesjav
public boolean pesquisaClientes(Long id){
		if( listaClientes[i] != null){
		 for(int i =0 ; listaClientes.length>i; i++ )
		 {
			 	if(listaClientes[i].getId()== id )
		JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 return true;	
		 }
		
		 }
		else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;	
	 }

ESSE "I" MEU inicializa com 0 entao ele esta na posiçao zero ne n?

CrOnNoS

for(int i =0 ; listaClientes.length>i; i++ ) Esse “i” sim inicializa com 0 e sobrepoem o “i” do seu objeto.
Mas antes de chegar no for, você usa o “i” do objeto no if( listaClientes[i] != null){

evertonsilvagomesjav
public boolean pesquisaClientes(Long id){
		
		 if( listaClientes[i] != null){
		 for(int i =0 ; listaClientes.length>i; i++ )
		 {
			 	if(listaClientes[i].getId()== id )
		JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 return true;	
		 }
		
		 }
		else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;	
	 }

veja só me ajuda a corrigir por favor cronos...

SE MINHA LISTA DE CLIENTES NA POSIÇAO 0 NAO TIVER NADA ENTRA NO FOR CERTO?
if( listaClientes[i] != null)
FOR UTILIZADO ENQUANTO O TAMANHO DO MEU ARRAY [3] FOR MAIOR Q I (0) CERTO?
for(int i =0 ; listaClientes.length>i; i++ )
SE MINHA LISTA DE CLIENTES NA POSIÇAO 0 COM O ID DA POSIÇAO 0 FOR IGUAL AO ID CAI NA SEGUINTE MSG CERTO?
if(listaClientes[i].getId()== id )
MENSAGEM DADA SE O ID DA POSIÇAO 0 FOR IGUAL AO ID DIGITADO NA PESQUISA CERTO?
JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 return true;
SE NAO ACONTECER TUDO ACIMA CAI NESTA MSG FALSE CERTO ?
else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;

QUERIA SABER O ERRO ME AJUDEM =//

L

Everton, a primeira coisa que você tem que analisar é que o "I" que vocês está utilizando no if( listaClientes[i] != null) não é o mesmo "I" do for(int i =0 ; listaClientes.length>i; i++ ).

O "I" do for só vai existir enquanto seu for estiver funcionando, seu escopo só valerá para o for. Quando, dentro do for, você faz int i =0 você está declarando uma nova variável cujo nome é "I" que vai valer somente enquanto o for durar.

o "I" que está sendo utilizado no primeiro if deve estar declarado na sua classe porque senão estaria dando erro de compilação.

CrOnNoS

qual sua intenção colocando esse if( listaClientes[i] != null) ?
Sem querer ser chato mas tá parecendo que você tá só colando código aqui e ali de forma aleatória e perguntando se tá certo hehe
Todos os seus post’s você questionou sobre os For e If’s, você entendeu como eles funcionam pelo menos ? Você sabe dizer o que você está tentando fazer ? Estou desde hoje a tarde tentando ajudar mas parece que você tá só tentando obter resposta do exercício e não entender e aprender =/

evertonsilvagomesjav

muito pelo contrario eu to qurendo aprender de verdade nao to qurendo so fazer o exercicio mesmo pq o exercicio ja tava feito cara…
eu queria entender o funcionamento de um return true um funcionamento de um return false, entender pq no meu metodo string pede um return null return endereço qual a diferença dos dois queria entender esses tipos de coisa

evertonsilvagomesjav

ESSA É A CLASSE DOS METODOS

package br.com.squadra.caixa.persistência.entidade;

import java.util.Arrays;
import java.util.Collection;

import javax.swing.JOptionPane;
import javax.swing.text.html.HTMLDocument.Iterator;

import br.com.squadra.caixa.persistência.principal.Principal;

public class Banco extends Cliente {
	
	String nome;
	String endereço;
	int i=0;
			
	Cliente listaClientes[] = new Cliente[3];
	Principal pesquisa =new Principal();
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEndereço() {
		return endereço;
	}
	public void setEndereço(String endereço) {
		this.endereço = endereço;
	}

	public boolean cadastrocliente (Cliente cliente){
	
		if (listaClientes.length > i){
			listaClientes[i]=cliente;
			JOptionPane.showMessageDialog(null,"Cadastrado Com Sucesso");
			i++;
			return true;
		}
		else
			JOptionPane.showMessageDialog(null,"Cadastro Encerrado");
		return false;
		}
	
	    public void exibirClientes() {  
		  for(int i = 0; listaClientes.length>i; i++) {    
		   if (listaClientes[i] != null);   
		   JOptionPane.showMessageDialog(null, "Usuarios Cadastrados: " +listaClientes[i] );
		    }     
		              
	}
	 public boolean pesquisaClientes(Long id){
		 int i=0;
		 if( listaClientes[i] != null){
		 for( i =0 ; listaClientes.length>i; i++ )
		 {
			 	if(listaClientes[i].getId()== id )
		JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
			 return true;	
		 }
		
		 }
		else
			JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;	
	 }
	 
		 
}

CLASSE QUE CHAMA OS METODOS

package br.com.squadra.caixa.persistência.principal;

import javax.swing.JOptionPane;

import br.com.squadra.caixa.persistência.entidade.Banco;
import br.com.squadra.caixa.persistência.entidade.Cliente;

public class Principal  {


public static void main(String[] args) {
	
	
	
	Banco banco = new Banco();
	int opcaocadastro = 0 ;
	
	do
	{	
	
	opcaocadastro=Integer.parseInt(JOptionPane.showInputDialog("Digite 1 para cadastro - 2 para Listar - 3 Para Pesquisar"));	
		
	switch (opcaocadastro){
	
	case 1:
	Long id=Long.parseLong(JOptionPane.showInputDialog("Digite o Id do Cliente"));
	String nome= JOptionPane.showInputDialog("Digite o nome do Cliente");	
	String cpf = JOptionPane.showInputDialog("Digite o CPF do Cliente");	
	
	Cliente cliente = new Cliente(); 
	cliente.setId(id);
	cliente.setNome(nome);
	cliente.setCpf(cpf);
		
	JOptionPane.showMessageDialog(null, cliente.toString());
	banco.cadastrocliente(cliente);
	break;	
	
	case 2:
	banco.exibirClientes();
	break;
	
	case 3:
	Long pesquisa=Long.parseLong(JOptionPane.showInputDialog("Digite o numero do Id do Cliente para Buscalo"));
	banco.pesquisaClientes(pesquisa); 
	 
	break;
		
	}                      

	}while (opcaocadastro != 0);
	
	
}


}
L

Não fiquei analisando todo seu código, mas para o seu método de pesquisa funcionar faça da seguinte maneira.

public boolean pesquisaClientes(Long id) {
		for (int i = 0; listaClientes.length > i; i++) {
			if (listaClientes[i].getId() == id){
				JOptionPane.showMessageDialog(null, "Cliente Procurado: " + listaClientes[i]);
				return true;
			}
		}

		JOptionPane.showMessageDialog(null, "Cliente não Cadastrado");
		return false;
	}

Acho que seria interessante você procurar a respeito de métodos em java e seus retornos para entender a história do return true/false. Neste caso você precisa retornar true ou false pois na assinatura do método (public boolean pesquisaClientes(Long id)), você definiu o tipo de retorno como boolean.

Criado 24 de agosto de 2009
Ultima resposta 24 de ago. de 2009
Respostas 15
Participantes 4