阶乘程序的输出
Output of Factorial program
我正在编写一个程序,它应该输出用户输入的任何数字的阶乘。该程序正确地给出了从 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);
}
}
它超过了整数可以取的最大值
最大 整数 value: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 循环的方式
我正在编写一个程序,它应该输出用户输入的任何数字的阶乘。该程序正确地给出了从 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);
}
}
它超过了整数可以取的最大值
最大 整数 value: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 循环的方式