Quero comparar se o objeto que estou passando já está no array, mas está dando erro NullPointException pois o array está vazio, como poderia resolver esse problema? obrigado.
Contato contatos[] = new Contato[10];
public void adicionarContato(Contato c) {
for (int z = 0; z < contatos.length; z++) {
Contato sem = new Contato();
contatos[z] = sem;
}
for (int x = 0; x<contatos.length; x++) {
for(int i = 0; i<contatos.length;i++ ) {
if(c.equals(contatos[i])) {
contatos[i] = null;
System.out.println("Contato já existe");
break;
}
}
if(contatos[x]==null) {
contatos[x] = c;
}
}
}
Nesse primeiro for tentei implementar o array com objetos vazios, mas não funciona pois sempre zera tudo ao rodar.
Inathan, bom dia.
Para essa validação você precisa comparar o objeto em si ? Não seria válida uma comparação em cima de alguma propriedade existente na sua entidade de contato ?
Ajustei seu exemplo para um cenário que eu acredito que funcione, não estou com nenhuma IDE aqui no momento então pode existir algum erro de sintaxe quando você passar para seu ambiente, porém, nesse meu exemplo levei em consideração uma validação em cima de um determinado código para saber se o objeto existe ou não, caso você queira realmente comparar a referência basta modificar a comparação.
Contato[] listaContatos = new Contato[10];
public void AdicionarContato(Contato contato)
{
//Percorrendo a lista e identificando se o contato informado já se encontra cadastrado.
for (int i = 0; i < listaContatos.length; i++)
{
if (listaContatos[i] != null && listaContatos[i].Codigo == contato.Codigo)
{
System.out.println("Contato já existe");
return;
}
}
//Verificando qual a posição se encontra disponível para inserir o novo contato.
for (int i = 0; i < listaContatos.length; i++)
{
if (listaContatos[i] == null)
{
listaContatos[i] = contato;
break;
}
}
}
1 curtida
Bom dia, obrigado pela resposta, vou tentar implementar esse exemplo no meu código, tenha uma bom dia!
O código funcionou bem! Muito obrigado!