Estou criando um crud com ArrayList e só está faltando o método alterar. Estou na tentativa de criar o método porém o mesmo não está fazendo a alteração do objeto. No exemplo abaixo fiz só com o nome pra você ter uma noção de como eu estou fazendo. Sou iniciante em java e agradeço a quem puder me ajudar.
public void alterarCliente(Cliente cliente, int codigo) {
for (Cliente clientes : repositorioCliente) {
if (clientes.getCodigoCliente() == codigo) {
clientes.setNome(cliente.getNome());
System.out.println("Cliente alterado");
}
}
}
Main
ClienteServico servicoCliente = new ClienteServico();
RepositorioCliente repositorio = new RepositorioCliente();
Cliente cliente = new Cliente(1,"Henrique@hotmail.com", 123, "Henrique", "masculino",
20, "12345678910");
Cliente cliente1 = new Cliente(2,"paulo@hotmail.com", 123, "paulo", "masculino", 30, "12345678910");
servicoCliente.cadastrarCliente(cliente);
servicoCliente.cadastrarCliente(cliente1);
servicoCliente.listarClientes();
Cliente cliente2 = new Cliente(1,"julio@hotmail.com", 123, "julio", "masculino", 30, "12345678910");
repositorio.alterarCliente(cliente2, 1);
Não tá printando a mensagem “Cliente alterado”?
Mostra o método de cadastro e a classe Cliente.
Ele não mostra a mensagem “Cliente alterado”.
Classe Cliente
public class Cliente extends Pessoa {
private int codigoCliente;
private String email;
private int senha;
public Cliente(int codigoCliente, String email, int senha, String nome, String sexo, int idade, String cpf) {
super(nome, sexo, idade, cpf);
this.email = email;
this.senha = senha;
this.codigoCliente = codigoCliente;
}
public Cliente(String email, int senha, String nome, String sexo, int idade, String cpf) {
super(nome, sexo, idade, cpf);
this.email = email;
this.senha = senha;
}
public int getCodigoCliente() {
return codigoCliente;
}
public void setCodigoCliente(int codigoCliente) {
this.codigoCliente = codigoCliente;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getSenha() {
return senha;
}
public void setSenha(int senha) {
this.senha = senha;
}
}
Método do cadastro
public Cliente cadastrarCliente(Cliente cliente) throws Exception {
if (cliente.getNome().length() < 4) {
throw new Exception("Insira um nome com no minímo 5 caracteres");
} else if (cliente.getCpf().length() < 11 || cliente.getCpf().length() > 11) {
throw new Exception("CPF inválido. Insira um CPF com 11 caracteres");
} else {
System.out.println("Cliente cadastrado com sucesso!");
return clienteRepositorio.adicionarCliente(cliente);
}
}
Repositório
public Cliente adicionarCliente(Cliente cliente) {
this.repositorioCliente.add(cliente);
return cliente;
}
Parece que o problema é que você tem duas instâncias do repositório.
Você cadastra em uma instância e tenta fazer a alteração em outra.
Uma solução seria mover o método alterarCliente para a classe de serviço.
1 curtida