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…
Por Favor me Ajudem
31 Respostas
tenho q criar um metodo para pesquisar tb se tiver como me ajudarem ae vlw
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.
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
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…
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.
a classe q vai exibir o conteudo e outra cronos o metodo fica na classe banco mais ele é exibido na classe principal
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
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[]
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.
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] );
}
}
}
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);
}
}
Tente trocar
JOptionPane.showMessageDialog(null, "Usuarios Cadastrados: " +listaClientes[i] );
por
JOptionPane.showMessageDialog(null, "Usuarios Cadastrados: " +listaClientes[i].getNome() );
ta exibindo so ultimo usuario cadastrado
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.
mais o objeto cliente seta os nomes em posiçoes diferentes no array entao nao tem problema usar um objeto nao tem?
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.
tem como vc me mandar como ficaria por favor?
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
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;
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);
}
}
Assim deve funcionar =P já testou ?
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
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.
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)??
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.
olha como esta
public void pesquisaClientes(Long id){
if(listaClientes[i].getId()==pesquisa.pesquisa );
JOptionPane.showMessageDialog(null, "Cliente Procurado: " +listaClientes[i]);
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.
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"));
se pesquisa é um int então basta “pesquisa” na comparação. Não tem “pesquisa.pesquisa”
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!
desculpa e pq eu so novo no forum criei conta hoje =/

