ここで検索して数日間グーグルで検索し、プログラミングの友達に尋ねました。残念ながら、コードを変更する方法がまだわかりません...
私のプログラムは、与えられた数の階乗を計算します。次に、階乗の回答に含まれる桁数を表す数値を提供します。次に、それらの桁の値を合計して合計を出します。
私のプログラムは 1 の間の任意の数で動作します! と 31!... 31 を超えるものを入れると! (たとえば、50! または 100!) は機能せず、マイナスの数値が返され、合計は返されません。
皆さんが私を正しい方向に向けたり、アドバイスをくれたりしてくれることを願っていました。BigIntegers の使用が解決策になる可能性があることは理解していますが、個人的には理解していないため、ここに来ました。
どんな助けでも大歓迎です。ありがとう。
package java20;
/**
* Program to calculate the factorial of a given number.
* Once implemented, it will calculate how many digits the answer includes.
* It will then sum these digits together to provide a total.
* @author shardy
* date: 30/09/2012
*/
//import java.math.BigInteger;
public class Java20 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//Using given number stored in factorialNo, calculates factorial
//currently only works for numbers between 1! and 31! :(
int fact= 1;
int factorialNo = 10;
for (int i = 1; i <= factorialNo; i++)
{
fact=fact*i;
}
System.out.println("The factorial of " + factorialNo +
" (or " + factorialNo + "!) is: " + fact);
//Using answer stored in fact, calculates how many digits the answer has
final int answerNo = fact;
final int digits = 1 + (int)Math.floor(Math.log10(answerNo));
System.out.println("The number of digits in the factorials "
+ "answer is: " + digits);
//Using remainders, calculates each digits value and sums them together
int number = fact;
int reminder;
int sum = 0;
while(number>=1)
{
reminder=number%10;
sum=sum+reminder;
number=number/10;
}
System.out.println("The total sum of all the " + digits
+ " idividual digits from the answer of the factorial of "
+ factorialNo + " is: " + sum);
}
}