Ajuda em calculo do fatorial

4 respostas
G

Bom galera, sou iniciante em java e tenho um exercicio para fazer que é criar um calculo do fatorial de um número inteiro digitado pelo usuário. Por exemplo, 5! = 5.4.3.2.1 = 120, eu consegui fazer mas existe um erro de logica, eu sei que é necessario fazer o numero - 1 * o numero -2, mas não sei de que forma fazer… desde ja agradeço a ajuda…

import javax.swing.*;

public class Fatorial{
	public static void main(String args []){
	               int numero,i;
		
		numero=Integer.parseInt(
				JOptionPane.showInputDialog("Digite um número inteiro"));
		
		for (i=1;i<=numero;i++){
			numero=numero*i;
		}
		JOptionPane.showMessageDialog(null,"O calculo fatorial do numero é:"+ numero);
	}
}

4 Respostas

LG11

tente isso:

import javax.swing.JOptionPane;//não há porque importar todas as classes sendo que vc so ta usando uma.
  
public class Fatorial{   
    public static void main(String args []){   
                   int numero, resultado;   
           
       numero=Integer.parseInt(   
                JOptionPane.showInputDialog("Digite um número inteiro"));   
           
        for (int i=numero; i<1; i--){   
            if(i != numero)
                resultado *= i; //to na duvida quanto ao operador. qlqr coisa mude para >> resultado = resultado * i; <<
        }   
        JOptionPane.showMessageDialog(null,"O calculo fatorial do numero é:"+ resultado);   
    }   
}

Se houver outras maneiras de se fazer isso adorarei ver. A minha maneira seria essa. So espero que esteja correto. hehehe :roll:

G

Eu tentei fazer das duas maneiras mas ainda não consegui…

B
Pode usar a classe BigInteger para que o valor não sofra overflow com valores muito grandes:
import java.math.BigInteger;
import javax.swing.JOptionPane;

public class Fatorial
{
    public static void main(String args[])
    {
        int numero;
        BigInteger resultado = BigInteger.ONE;

        numero = Integer.parseInt(JOptionPane.showInputDialog("Digite um número inteiro"));
        
        if (numero < 1)
            throw new IllegalArgumentException("O número deve ser maior que 0.");

        for (int i = 1; i <= numero; i++)
            resultado = resultado.multiply(new BigInteger(Integer.toString(i)));
            
        JOptionPane.showMessageDialog(null, "O calculo fatorial do numero é: " + resultado);
    }
}
G

Valeu pela ajuda, consegui da seguinte forma:

import javax.swing.JOptionPane;

public class Exercicio2{
	public static void main(String args []){
		int numero,i,resp=1;
		
		numero=Integer.parseInt(
			JOptionPane.showInputDialog("Digite um número inteiro"));
		
		for (i = 1; i <= numero; i = i + 1)
			resp = resp * i;
			
		JOptionPane.showMessageDialog(null,"O calculo fatorial do numero é: "+ resp);	
	}
}
Criado 4 de maio de 2008
Ultima resposta 4 de mai. de 2008
Respostas 4
Participantes 3