阶段计划的输出

时间:2015-09-11 12:25:09

标签: java factorial

我正在编写一个程序,该程序应该输出用户输入的任何数字的阶乘。程序正确地给出0到12的输出,但是如果我输入13,输出是1932053504但是在我的计算器中,13! = 6227020800。

另外在32岁!和33!,输出为负(32!= -2147483648)。从34开始,输出为零(0)。

我该如何解决这个问题?我希望程序能够提供用户输入的任何数字的正确输出。

import java.util.Scanner;
import java.io.*;
    public class one {

        public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter number: ");
        int val = in.nextInt();
        int factorial = 1;

        for (int i = 1; i <= val; i++) {
            factorial *= i;
        }
        System.out.println("The factorial of " + val + " is " + factorial);
   }
}

1 个答案:

答案 0 :(得分:2)

它超过整数可以采用的最大值

最大整数值:2147483647

最大值:9223372036854775807

最大值:7976931348623157 ^ 308

使用long,double或BigInteger,它没有上边界

 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter number: ");
        int val = in.nextInt();
        int factorial = 1;
        int i = 1;
        while (i <= val) {
            factorial = factorial * i;
            i++;
        }
        System.out.println("The factorial of " + val + " is " + factorial);
    }
}

这是你用while循环代替

的方法