Sou iniciante na programação em Java. Estou tentando criar uma agenda de contatos.
O que eu quero é mudar o valor de um elemento cujo atributo é estático. E este elemento esta num ArrayList.
public class Contato {
public static ArrayList<Contato> agenda = new ArrayList<>();
Contato contato = null;
private String nome;
private String telefone;
private static int count = 0;
private int codigo;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
@Override
public String toString() {
return "\n------------------------\n"
+ "Código: " + getCodigo()
+ "\nNome: " + getNome() + "\n"
+ "Telefone: " + getTelefone() + ""
+ "\n------------------------";
}
public boolean buscarPorCodigo(int codigo) {
for (int i = 0; i < agenda.size(); i++) {
if (agenda.get(i).getCodigo() == codigo) {
System.out.println(agenda.get(i).toString());
return true;
}
}
return false;
}
public void cadastrar() {
contato = new Contato();
contato.setCodigo(count++);
System.out.print("Nome: ");
contato.setNome(SisAgenda01.entrada.nextLine());
System.out.print("Telefone: ");
contato.setTelefone(SisAgenda01.entrada.nextLine());
agenda.add(contato);
System.out.println("\n_____ CADASTRADO COM SUCESSO! _____\n");
}
public void mostrarContatos() {
if (agenda.isEmpty()) {
System.out.println("\n_____ NENHUM CONTATO CADASTRADO! _____\n");
} else {
for (int i = 0; i < agenda.size(); i++) {
if (agenda.get(i) != null) {
System.out.println(agenda.get(i).toString());
}
}
}
}
public void editarContato() {
System.out.print("Digite o código: ");
int codigo = Integer.parseInt(SisAgenda01.entrada.nextLine());
if (buscarPorCodigo(codigo)) {
for (int i = 0; i < agenda.size(); i++) {
if (agenda.get(i).getCodigo() == codigo) {
int opcao;
System.out.print("1 - Editar nome\n"
+ "2 - Editar número\n"
+ "--> ");
opcao = Integer.parseInt(SisAgenda01.entrada.nextLine());
switch (opcao) {
case 1:
String novoNome;
System.out.print("Novo nome: ");
novoNome = SisAgenda01.entrada.nextLine();
agenda.get(i).setNome(novoNome);
System.out.println("\n_____ ALTERADO COM SUCESSO _____!\n");
break;
case 2:
String novoNumero;
System.out.print("Novo número: ");
novoNumero = SisAgenda01.entrada.nextLine();
agenda.get(i).setTelefone(novoNumero);
System.out.println("\n_____ ALTERADO COM SUCESSO _____!\n");
break;
default:
System.out.println("\n_____ OPÇÃO INVÁLIDA! _____\n");
}
}
}
} else {
System.out.println("\n_____ CONTATO NÃO ENCONTRADO! _____\n");
}
}
public void excluirContato() {
System.out.print("Código: ");
int op = Integer.parseInt(SisAgenda01.entrada.nextLine());
int confirma;
if (buscarPorCodigo(op)) {
System.out.print("\n------- DESEJA REALMENTE EXCLUIR? -------\n"
+ "1 - Sim\n"
+ "2 - Não\n"
+ "---> ");
confirma = Integer.parseInt(SisAgenda01.entrada.nextLine());
if (confirma == 1) {
for (int i = 0; i < agenda.size(); i++) {
if (agenda.get(i) != null) {
if (op == agenda.get(i).getCodigo()) {
agenda.remove(i);
System.out.println("\n----- EXCLUÍDO COM SUCESSO! -----\n");
}
}
}
} else if (confirma == 2) {
System.out.println("\n_____ CONTATO NÃO EXCLUÍDO! _____\n");
} else {
System.out.println("\n_____ OPÇÃO INVÁLIDA! _____\n");
}
}
}
}
O que eu quero é que… quando um contato for excluído, os contatos que restam na lista fiquem com o código em ordem crescente. Por exemplo:
Tenho 3 contatos cadastrados na lista, com os respectivos códigos:
Contato 1 = código: 1
Contato 2 = código 2.
Contato 3 = código 3.
Gostaria que quando eu excluir o Contato 2, o Contato 3 passe a ter código 2., ou o próximo contato que for cadastrado receba o código 2.