Por Favor me Ajudem

31 respostas
evertonsilvagomesjav

Olá pessoal eu estou começando agora um curso de Java sou bem iniciante vcs poderiam me ajudar eu to precisando criar um metodo que Liste os usuarios cadastros…




31 Respostas

evertonsilvagomesjav

tenho q criar um metodo para pesquisar tb se tiver como me ajudarem ae vlw

CrOnNoS

Copie e cole seu código entre as tags [ code][ /code] (sem os espaços) que facilita.
Respondendo:
Crie um for para ler o vetor de clientes do seu objeto banco e imprimir o cliente caso ele seja diferente de null

Cliente listaDeClientes[] = banco.getListaClientes(); for(int i = 0; listaDeClientes.length; i++) { if (listaDeClientes[i] != null) imprima } // for
algo assim.

evertonsilvagomesjav

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

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;



public static void main(String[] args) {
	Principal principal = new Principal();	
}

Cliente listaClientes[] = new Cliente[3];

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;
	}


	
}

esta é a classe onde tenho q criar os metodos para pesquisar e listar os clientes

evertonsilvagomesjav

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) {

Cliente cliente = new Cliente(); 
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.setId(id);
cliente.setNome(nome);
cliente.setCpf(cpf);
	
JOptionPane.showMessageDialog(null, cliente.toString());
banco.cadastrocliente(cliente);
break;	

case 2:
break;

case 3:
 Long pesquisa=Long.parseLong(JOptionPane.showInputDialog("Digite o numero do Id do Cliente para Buscalo"));
 
 
break;
	
	
}
                           





}while (opcaocadastro != 0);

}

}

ESTA E A CLASSE ONDE EU VO CHAMAR OS METODOS PARA LISTAR E PESQUISAR

NO CASE 2: É ONDE VOU CHAMAR O METODO PARA LLISTAR
NO CASE 3: É ONDE VOU CHAMAR PARA PESQUISAR

to querendo saber como vou criar o metodo para pesquisar e listar…

CrOnNoS

Se o método for ficar dentro da própria classe que tem como variável de instância a lista, e essa também for a classe que vai exibir o conteúdo (como tá parecendo que é) então basta algo como:

public void exibirClientes() { for(int i = 0; listaClientes.length; i++) { if (listaClientes[i] != null) imprima } // for

Para buscar, a mesma coisa mas com o método retornando “Cliente” e recebendo um “Cliente” como parâmetro (ou nome, não sei o que você vai buscar). No lugar da comparação com null, você compararia se aquele cliente é ou não o enviado por parâmetro, e no lugar do “imprima” basta retornar o cliente encontrado.

evertonsilvagomesjav

a classe q vai exibir o conteudo e outra cronos o metodo fica na classe banco mais ele é exibido na classe principal

CrOnNoS

Ainda sim o método que passei funcionaria. Mas é mais recomendado então você fazer um método “getListaClientes()” na classe Banco, que retornaria o seu vetor de clientes. E fazer esse for que imprime os valores na classe principal.
algo como:

Cliente listaClientes[] = banco.getListaClientes(); for(int i = 0; listaClientes.length; i++) { if (listaClientes[i] != null) imprima } // for

evertonsilvagomesjav

eu usei esse codigo que vc me passou acima imprimindo dessa forma porem ele imprimiu so o ultimo cadastro

public void exibirClientes() {

for(int i = 0; listaClientes.length > i; i++) {

if (listaClientes[i] != null)

JOptionPane.showMessageDialog(null,"Clientes Cadastrados: " +listaClientes[]
CrOnNoS

Passe o resto do seu código (até o fim da chamada do JOptionPane pelo menos). E lembra de cercar ele com a TAG Code que tem para clicar enquanto você tá digitando a resposta.

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

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;
	

	
	public static void main(String[] args) {
		Principal principal = new Principal();	
	}
	
	Cliente listaClientes[] = new Cliente[3];
	
	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] );
		    }     
		              
	}
}
evertonsilvagomesjav

ESSA E A CLASSE DE EXIBIÇAO
DENTRO DO CASE2 e onde vai ser listado

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) {
	
	Cliente cliente = new Cliente(); 
	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.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"));
	 
	 
	break;
		
		
	}
	                           

	

	
	
	}while (opcaocadastro != 0);
	
	
}


}
CrOnNoS
Tente trocar

JOptionPane.showMessageDialog(null, "Usuarios Cadastrados: " +listaClientes[i] );

por

JOptionPane.showMessageDialog(null, "Usuarios Cadastrados: " +listaClientes[i].getNome() );
evertonsilvagomesjav

ta exibindo so ultimo usuario cadastrado

CrOnNoS

Ae o problema está é no seu cadastro. Sempre que você cadastra um cliente você precisa CRIAR um objeto de cliente novo. Lembre-se que essa variável: Cliente cliente = new Cliente(); é só uma referência a UM objeto cliente. Se toda vez que você cadastra um novo cliente você usa a mesma referência, todos os outros clientes cadastrados anteriormente também vão alterar pois vão estar referênciando ao mesmo objeto.
Ou seja, não é que exibe só o último, e sim que só tem uma referência cadastrada nos 3 espaços do vetor.

Edit: (hoje é O dia deu ficar editando :/) Se essa explicação não for suficiente só falar que explico melhor.

evertonsilvagomesjav

mais o objeto cliente seta os nomes em posiçoes diferentes no array entao nao tem problema usar um objeto nao tem?

CrOnNoS

Tem. O que você está salvando no seu vetor são referências a objetos Cliente. Se você manda salvar sempre o mesmo objeto cliente, o seu vetor vai salvar todas as vezes a mesma referência. Você pode usar tranquilamente a variável “cliente” repetidas vezes, mas sempre que for enviar um cliente para ser adicionado, você deve criar um objeto novo com “new Cliente()” para fazer a variável referenciar a um objeto Cliente diferente do anterior.

evertonsilvagomesjav

tem como vc me mandar como ficaria por favor?

Polimorphism

Eu lembro muito bem quando isso aconteçeu comigo tambem…
Tava fazendo uma AI para jogo da velha, que pegava o tabuleiro e fazia testes, pra decidir a jogada, so que eu duplicava so a referencia, e acabava enchendo o tabuleiro com as peças do PC! Levei uns 2 dias até achar o problema e usar o metodo clone() =D
Boa sorte

CrOnNoS
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.setId(id);  
    cliente.setNome(nome);  
    cliente.setCpf(cpf);  
          
    JOptionPane.showMessageDialog(null, cliente.toString());  
    banco.cadastrocliente(cliente);  
    break;
Nesse trecho, ao invés de sempre usar a variável cliente referênciando ao mesmo objeto Cliente, sempre crie um novo. Primeiro subistitua o "Cliente cliente = new Cliente();" por "Cliente cliente;" porque não haverá necessidade de criar um objeto Cliente aqui. Depois adicione antes do cliente.setId(id); do case 1, cliente = new Cliente(); Assim toda vez que você for adicionar um cliente novo, um novo objeto cliente será criado.
evertonsilvagomesjav

FICARA DESSA FORMA?

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"));
	 
	 
	break;
		
		
	}
	                           

	

	
	
	}while (opcaocadastro != 0);
	
	
}


}
CrOnNoS

Assim deve funcionar =P já testou ?

evertonsilvagomesjav

aeeeeeeeee agora funcionouuuu cronos vlwwww cara XDDD

se nao for abusar da sua vontade se puder me ajudar a fazer um metodo agora pra pesquisar

CrOnNoS

Mas tente fazer e tire suas dúvidas.
O método de listar já te mostra como fazer para você checar todos os clientes no vetor listaClientes. Agora é só você pegar cada um desses clientes e comparar com o que você estiver buscando.
Se estiver buscando o cliente pelo nome por exemplo, cada listaCliente[i] do for, você precisaria chamar o método getName() e comparar com o buscado.
Algo como:

if (listaCliente[i].getName().equals(clienteBuscado.getName())) achou

Lembrando que String’s são objetos e objetos não se comparam com “==” e sim com o método equals do objeto.

evertonsilvagomesjav

eu preciso buscalos pelo id no caso id nesse exercicio e do tipo Long o metodo ficaria void tb?

tipo :

public void pesquisa (Long id)??

CrOnNoS

Depende do que você quer que o seu método faça (e isso não tem relação ao parâmetro buscado hehe).

Se o seu método vai buscar E imprimir (o que não é recomendado), o retorno pode ser void pois não vai ser preciso retornar nada.
O melhor seria o seu método retornar o objeto Cliente que você encontrou com aquele ID. Nesse caso o seu método retornaria um objeto Cliente, e no seu main, onde você chamaria o método, você pegaria esse cliente para imprimir seus dados.

evertonsilvagomesjav

olha como esta

public void pesquisaClientes(Long id){
		 if(listaClientes[i].getId()==pesquisa.pesquisa );
		 JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
} }
CrOnNoS

Assim não deve nem compilar, você está esquecendo o for para se locomover no vetor. Logo esse “i” usado para referênciar a posição do vetor que você está não deve estar declarado.
E de onde está vindo esse objeto “pesquisa” ? e esse método “.pesquisa” ?
E para imprimir o nome você precisa usar o método getName() depois de achar o objeto: listaClientes[i].getName()
colocar simplismente listaClientes[i] só chamaria o método toString() do objeto e não sei o que exatamente retornaria nesse caso.

evertonsilvagomesjav

EU QUERO COMPARAR ESSA VARIAVEL “PESQUISA” COM O ID DO CLIENTE CADASTRADO E ASSIM IMPRIMIR OS DADOS DO CLIENTE

case 3: pesquisa=Integer.parseInt(JOptionPane.showInputDialog("Digite o numero do Id do Cliente para Buscalo"));

CrOnNoS

se pesquisa é um int então basta “pesquisa” na comparação. Não tem “pesquisa.pesquisa”

Luiz_Aguiar

Por favor não crie mais tópico com tútulos como este: “Por Favor me Ajudem”.
Coloque algo que tenha a ver com seu problema, isso facilita pra vc conseguir ajudar e para quem quer ajudar.
Obrigado!

evertonsilvagomesjav

desculpa e pq eu so novo no forum criei conta hoje =/

Criado 23 de agosto de 2009
Ultima resposta 23 de ago. de 2009
Respostas 31
Participantes 4