Duvida em Lógica

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.