Chamar um objeto existente

boa noite, estou fazendo um programa de lista de compras e estou com essa duvida.
esse é um código para a inserção de itens em um arraylist que fica em outra classe. tudo funciona perfeitamente, mas eu só consigo printar a “lista de compras” dentro desse if(resposta.equals(“s”)) pq eu inicializei o objeto nele. mas eu precisava printar a lista quando o if acabasse. se eu coloco pra printar a cada repetição do for ele funciona normal. queria saber se tem algum jeito de chamar o objeto fora do if sem ter que inicializar o objeto de novo, pq ele não vai ter nada como parametro. e vai imprimir null.

	int k = 0;

	for(int j = 0; j < 100; k++) { // ADICIONAR ITENS
		resposta = JOptionPane.showInputDialog("deseja adicionar itens? [s] ou [n]");
		
		if(resposta.equals("s")) {
			Compras compras = new Compras(
				JOptionPane.showInputDialog("digite o item: "),
				Integer.parseInt(JOptionPane.showInputDialog("digite a quantidade: "))
				, null);
			
			compras.adicionar(compras);
			j++;
		} else
			j = 100;
	}

	//O PROBLEMA ESTA AQUI  VV
	JOptionPane.showMessageDialog(null,compras.imprimirCompras());
}

Porque o objeto compras tem um método adicionar que recebe ele mesmo como parâmetro?
Posta o código dessa classe Compras

1 curtida