これは私の割り当ての一部だったと5と7階乗を計算すると、どこが間違っていましたか?
の階乗を計算するように頼まれた私は以下のようにそれを終え:
import java.util.Scanner;
public class Factorial {
public static void main(String [] args)
{
System.out.println("Please enter a number: ");
Scanner input=new Scanner(System.in);
int number=input.nextInt();
int i,fact=1;
for(i=1;i<=number;i++){
fact=fact*i;
}
System.out.println("Factorial of " + number + " is: " + fact);
}
}
それは(120と5040をもたらす)5と7のために働きました。 私の教授が来て、20と987654321でテストしたところ、結果は-2102132736と0を返します。
なぜですか?
P.S.私は987654321のケースでは、アプリケーションが壊れてしまうか、エラーが返ってくる可能性が高いと考えました。
整数オーバーフロー(クラッシュなし)。 'fact'を' long'(または 'BigInteger')に変更してください。 –
誰かが大きい数字でそれを使うのを知っているなら、おそらく "Int"の代わりに "Long"を使うべきでしょう。しかし、なぜ、987654321の階乗の結果が0を返すのはなぜですか? – Meruemu
[Javaは10から99までのすべての数値の積が0だと思うのはなぜですか?](// stackoverflow.com/q/26375932) – Tom