为什么我的阶乘输出得到负数?

我编写了计算用户输入数字的阶乘的代码,但任何超过 12 的数字!我得到了错误的号码并且超过了 16!我得到负数。这是什么原因?有解决方案吗?


import java.util.Scanner;


class Factorial {

    public static void main(String[] args) {


        Scanner keyboard = new Scanner(System.in);


        Integer input = keyboard.nextInt(); 


        int fact = 1;


        for (int i = 1; i <= input; i++) {

            fact = fact * i;

        }


        System.out.println(fact); 

        keyboard.close(); 


    }

}


慕码人2483693
浏览 108回答 1
1回答

FFIVE

4 字节 int 限制为 2147483647。阶乘 13 为 6227020800。阶乘 13 值溢出 int 范围。尝试针对您的情况使用 long 。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java