이 내 임무의 일부와 나는 아래를 완료 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. 987654321의 경우 응용 프로그램을 크래시하거나 오류가 발생하기 때문에 결과가 커질 것으로 생각했습니다.
정수 오버플로 (크래시 없음). 'fact'를'long' (또는'BigInteger')으로 변경하십시오. –
다른 사람이 큰 번호를 사용하는 경우 "Int"대신 "Long"을 사용해야합니다. 그러나 여전히, 987654321의 계승 결과가 0을 반환하는 이유는 무엇입니까? – Meruemu
[Java가 10에서 99까지의 모든 숫자의 곱이 0이라고 생각하는 이유는 무엇입니까?] (// stackoverflow.com/q/26375932) – Tom