Fatorial

4 respostas
F

Queimei a pestana o dia inteiro e não consegui descobrir o que há de errado…
Por favor preciso de um help!!!

Obrigado!!!

//Crie um algoritmo para o calculo do fatorial de um número inteiro
//digitado pelo usuário. Por exemplo, 5! = 5.4.3.2.1 = 120

import javax.swing.JOptionPane;

public class Fatorial {

public static void main(String[] args) {

int fator=1, i = 1 ;

fator = Integer.parseInt(JOptionPane.showInputDialog("Digite um número"));

while(i <= fator){		

fator = fator * i;

i++;

JOptionPane.showMessageDialog(null, fator);
}	
							
	}
}

4 Respostas

doug

Olá
O erro foi não estruturação da lógica!!!... veja esse exemplo
e tente analisar o que estava errando, ok!?

bons estudos

import javax.swing.JOptionPane;

public class Fatorial {
	public static void main(String[] args) {
		int f = 1, i = 1;
		int num = Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite um número&quot;));
		while (i++ &lt; num) {
			f = f * i;
		}
		JOptionPane.showMessageDialog(null, &quot;Fatorial  de &quot; + &quot;: &quot; + f);
	}
}

espero ter ajudado
flwsss

LuksS

O erro é que você esta alterando as variaveis fator e i internamente
no loop while, e usa para controle do loop a condição de que i < fator só que fator não é mais constante,
vc o está alterando dentro do loop while!
faça isso:

import javax.swing.JOptionPane;

public class Fatorial {
public static void main(String[] args) {

 int fator = 1, i = 1;
        int fatorial;
        fator = Integer.parseInt(JOptionPane.showInputDialog("Digite um número"));
        fatorial = fator;
        while (i < fator) {
            fatorial = fatorial * i;
            i++;
        }
        JOptionPane.showMessageDialog(null, fatorial);

}
}
F

Obrigado pelas dicas!!! agora entendi por que não estava dando certo!!!

ViniGodoy

Faoli, da próxima vez que postar códigos, use a tag code, ok? Se você ainda não sabe fazer isso, dê uma lida aqui:
http://www.guj.com.br/posts/list/50115.java

Outra maneira de calcular o fatorial é através de uma função recursiva. Dá uma olhada:

import javax.swing.JOptionPane;

public class Fatorial {
   public static long fatorial(int valor) {
      return valor &lt;= 1 ? 1 : valor * fatorial(valor-1);
   }

   public static void main(String[] args) {
        int fator = Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite um número&quot;));
        JOptionPane.showMessageDialog(null, fatorial(fator));
   }
}
Criado 4 de maio de 2008
Ultima resposta 4 de mai. de 2008
Respostas 4
Participantes 4