Adicionar em Arraylist

Olá!

Por sugestão do Andre Rosa, estou criando esse tópico para minha dúvida. Pesquisei um pouco antes, mas não consigo localizar o erro.

Alguém pode me dizer qual o erro em meu código?
Ele mantém apenas o último dado capturado. Por exemplo , mesmo cadastrando 10 medicamentos, apenas o último é apresentado 10 vezes.

import java.util.ArrayList;   
import javax.swing.JOptionPane;   
  
public class Estoque {   
public ArrayList<Medicamento> farmacia = new ArrayList<Medicamento>();//arraylist para armazenamento   
       Medicamento med = new Medicamento();// criei um novo objeto para manipular a classe medicamento   
  
public void cadastrar() {//método para cadastrar vários medicamentos   
  
       String resp = new String();//criando variável para reter a opção do usuário   
  
do {   
        med.setNome (JOptionPane.showInputDialog("Nome do Medicamento: "));// captura nome   
    med.setLaboratorio (JOptionPane.showInputDialog("Nome do Laboratorio: "));// captura laboratorio   
    med.setPrincipio (JOptionPane.showInputDialog("Nome do Principio Ativo: "));// captura principio   
    med.setValidade(JOptionPane.showInputDialog("Data de Validade: "));// captura validade   
  
        farmacia.add(med);   
  
                resp = JOptionPane.showInputDialog("Continua cadastrando [S/N]? ");// captura a resposta do usuario e armazena   
                }   
  
      while (resp.equalsIgnoreCase("S"));// enquanto for igual sim, repete a instrução dentro do laço do   
         
         if (resp.equalsIgnoreCase("N")){   
             this.menu();   
         }   
    }   
  

Acredito que é algum erro simples, mas eu realmente não o localizo. Comecei há pouco tempo (em Java, em Programação de qualquer tipo e aqui no GUJ) e agradeceria se alguém me ajudasse, obrigada.

É um erro comum esse…

O que acontece é que você está sempre adicionando o mesmo objeto médico a sua lista…

Nesse objeto voce troca as informacoes… e adiciona denovo na lista o mesmo médico…

Veja se com essa dica consegue descobrir o que está errado…

Instanciei Medicamento dentro do laço do{}.

Agora está funcionando maravilhas!

Muito obrigada!