Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Exercício Fatorial de um número

import java.util.Scanner;

public class CalculaFatorial { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int numero;

    while (true) {
        System.out.print("Digite um número inteiro não negativo para calcular o fatorial: ");
        String entrada = sc.nextLine();

        try {
            numero = Integer.parseInt(entrada);

            if (numero < 0) {
                System.out.println("Erro: O número não pode ser negativo.\n");
            } else {
                break;
            }
        } catch (NumberFormatException e) {
            System.out.println("Erro: Digite apenas um número inteiro válido.\n");
        }
    }

    long fatorial = 1;
    for (int i = 2; i <= numero; i++) {
        fatorial *= i;
    }

    System.out.println("O fatorial de " + numero + " é: " + fatorial);
    sc.close();
}

}

2 respostas

Oi, Sheila! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu código está muito bem estruturado! Gostei da forma como você tratou entradas inválidas e números negativos usando try-catch e if, deixando a interação mais segura para quem usa o programa.

Uma dica interessante para o futuro é usar BigInteger quando quiser calcular fatoriais de números maiores, já que o long pode acabar não sendo suficiente.Veja este exemplo:


import java.math.BigInteger;

BigInteger fatorial = BigInteger.ONE;
for (int i = 2; i <= numero; i++) {
    fatorial = fatorial.multiply(BigInteger.valueOf(i));
}
System.out.println("Fatorial com BigInteger: " + fatorial);

Esse código usa BigInteger no lugar de long para evitar estouro de valor com números grandes.

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

solução!

Olá Rafaela! Mil obrigadas por sua dica!!! Eu adorei!