Java 为什么我的阶乘输出是负数?

Java 为什么我的阶乘输出是负数?,java,Java,我做了一个代码,计算用户输入的数字的阶乘,但任何超过12!我打错电话了,16岁以上的人都打错了!我得到的是负数。出现这种情况的原因是什么?是否有解决方案 import java.util.Scanner; class Factorial { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); Integer input = keyboa

我做了一个代码,计算用户输入的数字的阶乘,但任何超过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(); 

    }
}

import java.util.Scanner;
类阶乘{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
整数输入=keyboard.nextInt();
int-fact=1;

对于(int i=1;i4字节int limit是2147483647。Factorial 13是6227020800。Factorial 13的值溢出了int范围。请尝试使用long来处理您的情况。

anything>12!溢出了整数值空间;这也是您所看到的帮助:要解决您的问题,请使用不同的数据类型,一种范围更广的数据类型。例如:
 long fact=1L;
但要知道限制!您可能想了解java数据类型:w3schools.com/java/java_data_types.aspYes您是对的,重复。我在搜索时没有看到。谢谢