Remover objeto encontrado por código em arraylist

Não estou conseguindo remover objetos de um ArrayList, eu já criei alguns métodos, um deles busca um projeto pelo código do projeto, e encontra, porém não consigo remover pela posição do projeto encontrado…

    import java.util.ArrayList;
    import javax.swing.JOptionPane;
    import java.util.Iterator;

    public class Agencia{
       String dadosProjeto = "";
       private ArrayList <Projeto> projetos;
       
       public Agencia(){
          projetos = new ArrayList<>();
       }
       
       public void inserirProjeto(){
          
          String titulo = JOptionPane.showInputDialog("Título do projeto: ");
          double orcamento = Double.parseDouble(JOptionPane.showInputDialog("Orçamento do projeto: "));
          String duracao = JOptionPane.showInputDialog("Duração do projeto(meses): ");
          String instituicao = JOptionPane.showInputDialog("Insituição: ");
          String areaPesq = JOptionPane.showInputDialog("Área relacionada a pesquisa: ");
          int codProjeto = Integer.parseInt(JOptionPane.showInputDialog("Código do projeto: "));
          Projeto  novoProjeto = new Projeto(titulo, orcamento, duracao, instituicao, areaPesq, codProjeto);
          projetos.add(novoProjeto);
          dadosProjeto += "********************************\nTítulo: " + titulo + "\nOrcamento: " + orcamento + "\nDuracao (meses): " + duracao + "\nInstituicao: " + instituicao + "\nÁrea de pesquisa: " + areaPesq + "\nCódigo do Projeto: " + codProjeto + "\n\n********************************\n";
          
       }
       
       public void listarProjetos(){
          JOptionPane.showMessageDialog(null, "======================PROJETOS======================\n\n\n" + dadosProjeto);
          
       }
       
       
       
       public void buscarProjeto(){
          int buscaCod = Integer.parseInt(JOptionPane.showInputDialog("Código projeto: "));
          for(int i = 0; i < projetos.size(); i++){
             if(projetos.get(i).getCodProjeto() == buscaCod){
             JOptionPane.showMessageDialog(null, "++++ PROJETO ENCONTRADO ++++\nTítulo: " + projetos.get(i).getTitulo() + "\nOrçamento: " + projetos.get(i).getOrcamento() + "\nDuração: " + projetos.get(i).getDuracao() + "\nInstituicao: " + projetos.get(i).getInstituicao() + "\nÁrea relacionada: " + projetos.get(i).getAreaPesq() + "\nCódigo Projeto: " + projetos.get(i).getCodProjeto() + "\n\n\n  ENTER para adicionar dados do novo projeto");
             projetos.remove(projetos.get(i));
             String titulo = JOptionPane.showInputDialog("======== ALTERAR DADOS DO PROJETO ENCONTRADO ========\n\nTítulo: ");
             double orcamento = Double.parseDouble(JOptionPane.showInputDialog("======== ALTERAR DADOS DO PROJETO ENCONTRADO ========\n\nOrçamento do projeto: "));
             String duracao = JOptionPane.showInputDialog("======== ALTERAR DADOS DO PROJETO ENCONTRADO ========\n\nDuração do projeto(meses): ");
             String instituicao = JOptionPane.showInputDialog("======== ALTERAR DADOS DO PROJETO ENCONTRADO ========\n\nInsituição: ");
             String areaPesq = JOptionPane.showInputDialog("======== ALTERAR DADOS DO PROJETO ENCONTRADO ========\n\nÁrea relacionada a pesquisa: ");
             int codProjeto = Integer.parseInt(JOptionPane.showInputDialog("======== ALTERAR DADOS DO PROJETO ENCONTRADO ========\n\nCódigo do projeto: "));
             
             Projeto  novoProjeto = new Projeto(titulo, orcamento, duracao, instituicao, areaPesq, codProjeto);
             projetos.add(novoProjeto);
            
                 } 
             }
          }
       
   public void buscaPorCodigo(){
   int buscaCod = Integer.parseInt(JOptionPane.showInputDialog("Código do projeto p/ remover: "));
      for(int i = 0; i < projetos.size(); i++){
         if(projetos.get(i).getCodProjeto() == buscaCod){
         JOptionPane.showMessageDialog(null, "++++ PROJETO ENCONTRADO ++++\nTítulo: " + projetos.get(i).getTitulo() + "\nOrçamento: " + projetos.get(i).getOrcamento() + "\nDuração: " + projetos.get(i).getDuracao() + "\nInstituicao: " + projetos.get(i).getInstituicao() + "\nÁrea relacionada: " + projetos.get(i).getAreaPesq() + "\nCódigo Projeto: " + projetos.get(i).getCodProjeto());
            }
       }
}
   public void buscaRemove(){
   int buscaCod = Integer.parseInt(JOptionPane.showInputDialog("Código do projeto p/ remover: "));
      for(int i = 0; i < projetos.size(); i++){
         if(projetos.get(i).getCodProjeto() == buscaCod){
         projetos.get(i);
         projetos.remove(i);
            JOptionPane.showMessageDialog(null, "Projeto removido.");
            
      }
   
      }
   }
}


import javax.swing.JOptionPane;
public class AgenciaApp{
   public static void main(String args[]){
   
  int menu;
   
  Agencia agencia = new Agencia();
  do {
  
     menu = Integer.parseInt(JOptionPane.showInputDialog("=-=-=-=-= AGENCIA DE PROJETOS =-=-=-=-=\n 1. Inserir um novo projeto;\n 2. Listar todos os projetos;\n 3. Atualizar a avaliação do projeto;\n 4. Excluir um projeto;\n 5. Listar um projeto pelo número; \n 6. Sair."));
  
     if(menu == 1){
        agencia.inserirProjeto();
     }
  
     if(menu == 2){
        agencia.listarProjetos();
     } 
     
     if(menu == 3){
        agencia.buscarProjeto();
        }
       
     if(menu == 4){
        agencia.buscaRemove();
     
     }
       
     if(menu == 5){
        agencia.buscaPorCodigo();
     }
                
     if(menu == 6){
        System.exit(0);
        }
  }while(menu != 1 || menu != 2 || menu != 3 || menu != 4);
   
   }   
}

Sugestão: tente remover projetos.get(i);. Pelo que observei do seu código, dentro do laço, se ele encontra o valor procurado, ele remove, certo?

Posso estar errada, mas, entendo que ao colocar projetos.get(i);, você está pedindo ao if que, se caso ele encontrar, apenas obtenha o código do projeto, ignorando assim a segunda linha.

Além disso, você já passou o índice para encontrar o código do produto dentro de projetos.remove(i), então remove() já vai encontrá-lo, também, naquela posição buscada.

Sugiro dar uma olhadinha na documentação também… :wink:

Ou, então ainda, talvez você possa tentar isso:

if(projetos.get(i).getCodProjeto() == buscaCod){
         projetos.remove(buscaCod);
         JOptionPane.showMessageDialog(null, "Projeto removido.");
}

Boa tarde…
Então, esse projetos.get(i); nem tinha no código, é que chegou um momento que eu tava tentando de tudo, até o que não fazia sentido, mas vou olhar essa documentação pra tentar arrumar aqui!!! obrigadoo

1 curtida