Ola galera,
Então estou tentando fazer um programa bem básico em Java, onde vai funcionar na memória RAM mesmo(Apenas testes), o programa é o seguinte: Efetua cadastro de clientes(colocando o nome e o id, é bem básico mesmo, pois depois iriei implementar mais coisas), o problema é o seguinte, tenho minha classe Cliente, e a classe Registrar, nela tenho o método registra, onde é feito o cadastro do cliente, o problema é que sempre tenho que criar um objeto de Cliente, no código na mão, gostaria que fosse assim: o usuário cadastrava o cliente, e o programa já criava um objeto de Clientes, gostaria de saber se existe alguma forma de fazer isto, já procurei bastante e não achei, estou procurando ainda;)
Segue o meu código.
public class Cliente {
private Long id;
private String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean equals(Object object){
if (this.getId() == ((Cliente) object).getId()){
return true;
}
else{
return false;
}
}
}
public class Registrar {
List<Cliente>listaClientes = new ArrayList<Cliente>();
Scanner valores = new Scanner(System.in);
void registrar(){
System.out.println("Digite o nome do cliente");
String valorNome = valores.nextLine();
System.out.println("Digite o id do cliente");
Long valorId = Long.parseLong(valores.nextLine());
Cliente cliente = new Cliente(); // Aqui onde gostaria que os objetos fossem criados automaticamente quando o registra() for chamado
cliente.setId(valorId);
cliente.setNome(valorNome);
adiciona(cliente);
}
void adiciona(Cliente cliente){
this.listaClientes.add(cliente);
}
}
Já até tentei fazer um loop onde o usuário colocava o tanto de cliente que iria cadastrar, assim o loop criava o tanto de objetos,mas não deu certo;/, e achei um modo muito feio hehe
Valeu.
Definitivamente não entendi o que quer.
Se você se refere como “criar o cliente quando chama o método registrar” como instanciar o mesmo e não declarar, pode fazer assim:
[code]
public class Registrar {
ListlistaClientes = new ArrayList();
Scanner valores = new Scanner(System.in);
Cliente cliente;//note, aqui eu o declaro
void registrar(){
System.out.println("Digite o nome do cliente");
String valorNome = valores.nextLine();
System.out.println("Digite o id do cliente");
Long valorId = Long.parseLong(valores.nextLine());
//aqui eu instancio-o como sendo um novo objeto da classe Cliente
cliente = new Cliente();
cliente.setId(valorId);
cliente.setNome(valorNome);
adiciona(cliente);
}
void adiciona(Cliente cliente){
this.listaClientes.add(cliente);
}
} [/code]
[quote=drsmachado]Definitivamente não entendi o que quer.
Se você se refere como “criar o cliente quando chama o método registrar” como instanciar o mesmo e não declarar, pode fazer assim:
[code]
public class Registrar {
ListlistaClientes = new ArrayList();
Scanner valores = new Scanner(System.in);
Cliente cliente;//note, aqui eu o declaro
void registrar(){
System.out.println("Digite o nome do cliente");
String valorNome = valores.nextLine();
System.out.println("Digite o id do cliente");
Long valorId = Long.parseLong(valores.nextLine());
//aqui eu instancio-o como sendo um novo objeto da classe Cliente
cliente = new Cliente();
cliente.setId(valorId);
cliente.setNome(valorNome);
adiciona(cliente);
}
void adiciona(Cliente cliente){
this.listaClientes.add(cliente);
}
} [/code][/quote]
Então entendi, mas o problema é quero cadastrar os clientes depois efetuar uma listagem, e pode ser cadastrado N clientes.
Estou guardando os clientes em uma lista, depois irei fazer a listagem por ela.
Sim, para isto, ao fim do método registrar, você possui uma invocação ao método adicionar, não?
Esse método tem como finalidade inserir o cliente criado na lista de clientes.
Para listar os cadastrados, basta iterar sobre a lista e ir mostrando.
[quote=drsmachado]Sim, para isto, ao fim do método registrar, você possui uma invocação ao método adicionar, não?
Esse método tem como finalidade inserir o cliente criado na lista de clientes.
Para listar os cadastrados, basta iterar sobre a lista e ir mostrando.[/quote]
Então dei uma procurada na net, e achei o código abaixo, porém da exceção : java.lang.IndexOutOfBoundsException
ListIterator<Cliente> it = listaClientes.listIterator();
while (it.hasNext()) {
System.out.println(it.next());
}
coloquei dentro do método adiciona.
Boa tarde.
Para iterar sobre um ArrayList faça:
for(Cliente cli : listaClientes)
{
...
}
^
|
|
---- assim fica mais difícil de gerar exceção.