Problema ao pegar valor dentro de while

Boa tarde,
A ideia é digitar os números números qualquer e calcular a fatorial de cada número. Mas não consegui pegar o valor da variável por exemplo,

String entra;
int cont = 1;
int numero = 0;
int fatorial = 1;
int contFat = 1;

while(cont <= 10){
    entra = JOptionPane.showInputDialog("Insira um numero: ");      
    numero = Integer.parseInt(entra);
    cont++;

    while(contFat <= numero)
    {
        fatorial = fatorial + (fatorial*(numero-1));
        numero--;   
    }
    
    System.out.println("resultado da fatorial é: " + fatorial);

}

resultado da fatorial é: 6
resultado da fatorial é: 12
resultado da fatorial é: 12

no caso digitei os números na ordem 3,2,1. A fatorial do segundo numero que deveria ser 2, multiplicou pelo 6(resultado da primeira fatorial), como eu poderia fazer para imprimir o valor da fatorial de cada numero que eu digitar?
Obrigado

import javax.swing.JOptionPane;

public class Main {

	public static void main(String[] args) {
		while (true) {
			int numero = lerNumero();
			int fatorial = fatorial(numero);
			System.out.println("O resultado da fatorial é: " + fatorial);
		}
	}
	
	private static int lerNumero() {
		try {
			String entrada = JOptionPane.showInputDialog("Insira um numero (ou vazio para encerrar): ");
			
			if (entrada == null || entrada.isEmpty()) {
				System.exit(0);
			}
			
			return Integer.parseInt(entrada);
		} catch (NumberFormatException ex) {
			JOptionPane.showMessageDialog(null, "Número inválido, tente novamente.");
			return lerNumero();
		}
	}

	private static int fatorial(int num) {
		if (num == 0) {
			return 1;
		}

		return num * fatorial(num - 1);
	}
}
1 curtida