Editar/Remover valores ArrayList [RESOLVIDO]

9 respostas
S

Galera sou novo nessa área e gostaria da ajuda de vocês para conseguir terminar esse exercício
eu ja tenho 2 métodos criados, um para cadastrar e outro para listar o que tem cadastrado no arraylist
preciso fazer mais dois métodos, um para alterar e outro para excluir mas não to conseguindo desenrolar isso
já li outros tópicos aqui no fórum e em outros lugares mas não consegui ainda como fazer esses métodos! :(

public class Main {

    static ArrayList<Aluno> listaAlunos = new ArrayList<Aluno>();
    //Cadastrando Alunos
    //Não cadastrar matrícula repetida

    public static void cadastrar(Aluno a) {
        if (a.nome.trim().equals("")) {
            JOptionPane.showMessageDialog(null, "Informar o nome do aluno");
        } else if (a.cpf.trim().equals("")) {
            JOptionPane.showMessageDialog(null, "Informar o CPF do aluno");
        } else {
            boolean achou = false;
            for (int i = 0; i < listaAlunos.size(); i++) {
                if (a.matricula == listaAlunos.get(i).matricula) {
                    achou = true;
                    break;
                }
            }
            if (achou == true) {
                JOptionPane.showMessageDialog(null, "A matrícula  se encontra cadastrada");
            } else {
                listaAlunos.add(a);
                JOptionPane.showMessageDialog(null, "Aluno cadastrado com sucesso");
            }
        }
    }

    public static void listar() {
        String saida = "";
        //Listar todos os Alunos Cadastrados
        for (int i = 0; i < listaAlunos.size(); i++) {
            saida = saida + "Nome: " + listaAlunos.get(i).nome + "\n" + "CPF: " + listaAlunos.get(i).cpf + "\n" + "Matrícula: " + listaAlunos.get(i).matricula;
        }
        JOptionPane.showMessageDialog(null, saida);
    }

9 Respostas

Rodrigo_Sasaki

pense assim pra começar…

se você tiver um aluno que quer alterar, como vai saber qual aluno da lista você quer alterar? o que diferencia cada aluno?
é com esse atributo que você vai saber qual aluno alterar

S

quero apenas alterar o nome e excluir pelo nome, não precisa ser mais que isso
esqueci de falar que eu criei uma Classe Aluno
e nela é que tem os atributos nome, matricula e cpf!

F

Se quer alterar e excluir pelo nome é só iterar o array, buscando o nome desejado.

para remover:

remover(String nome) {
  for (int i = 0; i < listaAluno.size(); i++) {
    if (listaAluno.get(i).getNome().equals(nome)) {
      listaAluno.remove(i);
    }
  }
}

Pra alterar a mesma coisa, só adaptar. =)

Rodrigo_Sasaki

felipeaps:
Se quer alterar e excluir pelo nome é só iterar o array, buscando o nome desejado.

para remover:

remover(String nome) {
  for (int i = 0; i < listaAluno.size(); i++) {
    if (listaAluno.get(i).getNome().equals(nome)) {
      listaAluno.remove(i);
    }
  }
}

Pra alterar a mesma coisa, só adaptar. =)

eu queria ajudar o cara a chegar na conclusão sozinho ehehhe… mas blz…

nel

felipeaps:
Se quer alterar e excluir pelo nome é só iterar o array, buscando o nome desejado.

para remover:

remover(String nome) {
  for (int i = 0; i < listaAluno.size(); i++) {
    if (listaAluno.get(i).getNome().equals(nome)) {
      listaAluno.remove(i);
    }
  }
}

Pra alterar a mesma coisa, só adaptar. =)

Vai gerar ConcurrentModificationException :slight_smile:
Se quer remover um item da lista que está iterando, o correto (e talvez único modo), é via Iterator.

F

nel:
felipeaps:
Se quer alterar e excluir pelo nome é só iterar o array, buscando o nome desejado.

para remover:

remover(String nome) {
  for (int i = 0; i < listaAluno.size(); i++) {
    if (listaAluno.get(i).getNome().equals(nome)) {
      listaAluno.remove(i);
    }
  }
}

Pra alterar a mesma coisa, só adaptar. =)

Vai gerar ConcurrentModificationException :slight_smile:
Se quer remover um item da lista que está iterando, o correto (e talvez único modo), é via Iterator.

É verdade hahaha
nem me atentei a isso.

S

mas ainda não conseguir chegar na conclusão! :confused:
onde que entro com a interação com o usuário para ele digitar o Nome para excluir?
esse método getNome() de onde vem? ele não existe aqui

nel

Eu vi algo assim no seu código: a.nome

O que é isso? Cadê o get? Não esqueça do encapsular o seu pojo!
Sobre remover, é só varrer a lista até achar o aluno, remove da lista e dá um break !

Para editar, bastar dar um get e editar o objeto que por referência ele é alterado na sua lista.

S
nel:
Eu vi algo assim no seu código: a.nome

O que é isso? Cadê o get? Não esqueça do encapsular o seu pojo!
Sobre remover, é só varrer a lista até achar o aluno, remove da lista e dá um break !

Para editar, bastar dar um get e editar o objeto que por referência ele é alterado na sua lista.
a.nome se refere ao nome do aluno! eu criei uma classe Aluno
public class Aluno {
    String nome;
    int matricula;
    String cpf;
}
METODO REMOVER RESOLVIDO!
public static void remover() {
        String remover = JOptionPane.showInputDialog("Digite o Nome do Aluno para Excluir");
        for (int i = 0; i < listaAlunos.size(); i++) {
            if (listaAlunos.get(i).nome.equals(remover)) {
                remover += listaAlunos.remove(i);
            }
        }
    }
RESOLVIDO TAMBÉM!
public static void alterar() {

        String nome = JOptionPane.showInputDialog("Digite o Nome do Aluno que deseja Alterar");
        String novo = JOptionPane.showInputDialog("Digite o Novo Nome");
        for (int i = 0; i < listaAlunos.size(); i++) {
            if (listaAlunos.get(i).getNome().equals(nome)) {
                listaAlunos.get(i).setNome(novo);
               
            }
        }
    }
Criado 29 de março de 2012
Ultima resposta 29 de mar. de 2012
Respostas 9
Participantes 4