java设计一个求n!的方法结果为一个长整数。编写一个程序从键盘输人一个数给整数K赋值然后调用求n!的方法求 K!在程序中规划处理如下异常情况:①输人的数不是一个整数而是实数则不计算;② 输人的数据是一个十六进制表示形式的串如ox1a则取串的后级部分1a转化为十进制数再进行计算。
import java.math.BigInteger;
import java.util.Scanner;
public class Factorial {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数:");
String str = input.next();
BigInteger k;
try {
if (str.startsWith("0x")) { // 十六进制
k = new BigInteger(str.substring(2), 16);
} else { // 十进制
k = new BigInteger(str);
}
System.out.println(k + "! = " + factorial(k));
} catch (NumberFormatException e) { // 输入不合法
System.out.println("输入不合法!");
}
}
public static BigInteger factorial(BigInteger n) {
if (n.compareTo(BigInteger.ZERO) == 0) { // 0! = 1
return BigInteger.ONE;
} else { // n! = n*(n-1)!
return n.multiply(factorial(n.subtract(BigInteger.ONE)));
}
}
}
``
原文地址: https://www.cveoy.top/t/topic/caZK 著作权归作者所有。请勿转载和采集!