//计算指定数据的阶乘。
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
//向用户声明。
System.out.println("仅支持0~20以内的整数的阶乘。\n输入数据:");
//接收键盘数据。
Scanner s=new Scanner(System.in);
//if语句判断输入的内容,避免在内容不合法时程序无法运行。
if(!(s.hasNextLong())) {
System.out.println("数据不合法。");
return;
}
//把键盘数据赋值给data。
long data=s.nextLong();
//调用方法。
Factorial.function(data);
}
//运算方法。
public static long function(long a) {
//判断形参是否没有超出范围以决定是否结束。
if(a>20 || a<0) {
System.out.println("数据超出范围,结束运算。");
//结束方法。
return 0;
}
//当形参是特别的0时,直接输出0!=1。
if(a==0) {
Factorial.out(0,1);
//结束方法。
return 0;
}
//定义一个负责实时记录的变量与一个a的备份以免改变a。
long now=1,b=a;
//用for语句遍历每一个比形参小的非1正整数。
for(;b!=1;b--){
now=now*b;
}
//调用输出方法。
Factorial.out(a,now);
//结束方法。
return 0;
}
//输出方法。
public static void out(long a,long b) {
System.out.println(a+"!="+b);
}
}