Olá Henrique! A forma como o Edgar fez é uma boa opção. Porém, esta forma há alguns problemas de manutenção, veja que se você quiser fazer o fatorial de outro número, será necessário alterar em 4 lugares o método. Então se torna de certo ponto uma forma não muito boa em boas práticas de programação.
Fiz de outra forma e pensando em utilizar menos código e utilizando métodos das Classes de Java:
public class Fatorial {
public static void main(String[] args) {
int fatorial = 1;
String operacao = "";
for (int n = 1; n <= 10; n++) {
fatorial = fatorial * n;
operacao = operacao + " x " + n;
}
operacao = operacao.substring(3);
System.out.println("Fatorial de 10 = " + operacao + " = " + fatorial);
}
}
Da mesma forma como você fez, dentro do for()
criei a operação em String. Porém, ao invés de simplesmente imprimir cada número com o System.out.print
eu armazenei a String em uma variavel chamada operacao
, que foi criada antes do inicio do for()
e vazia inicialmente. Assim, a cada laço a operação ia sendo formada da seguinte forma:
x 1
x 1 x 2
x 1 x 2 x 3
x 1 x 2 x 3 x 4,
...
x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10
Você pode estar se perguntando. "Qual a diferença?" e "Porque armazenar a String em uma variável e não imprimir logo?".
Então... Ao final veja que temos o mesmo problema que você, a diferença é que o "x" agora está no inicio. Isso foi proposital!
Ao armazenarmos essa String em uma variável, podemos fazer uso de todos os métodos da classe String e um desses métodos é o substring()
. Esse método nos retorna uma String a partir da String por ele invocada, no entanto essa nova string começará a partir do index do caracter informado como parâmetro, começando em 0. Exemplo:
String fruta = "banana";
fruta.substring(1); // Retorna "anana"
fruta.substring(2); // Retorna "nana"
Assim, utilizei este método para retrirar os 2 espaços e o "x", logo pus para minha nova string começar do caracter de index 3, ou seja, o 1. Assim, armazenei a nova String na própria variável operação.
Assim so fiz imprimir no console o que desejava.
Pra que você possa ver a vantagem da forma que fiz, podemos modifica-la um pouco mais e coloca-la em um método, ficando assim:
public class Fatorial {
public static void main(String[] args) {
fatora(10);
fatora(12);
fatora(15);
}
private static void fatora(int numero) {
int fatorial = 1;
String operacao = "";
for (int n = 1; n <= numero; n++) {
fatorial = fatorial * n;
operacao = operacao + " x " + n;
}
operacao = operacao.substring(3);
System.out.println("Fatorial de "+ numero + " = " + operacao + " = " + fatorial);
}
}
Agora basta chamamos o método fatorial()
passando o numero como argumento, que é devolvido o valor no console com a expressão pronta.
A saída no console foi a seguinte para os 3 métodos chamados:
Fatorial de 10 = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 = 3628800
Fatorial de 12 = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479001600
Fatorial de 15 = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 x 13 x 14 x 15 = 2004310016
Espero ter ajudado! Bons Estudos!