编写程序(java):输入一个整数n,计算n的阶乘并捕捉可能出现的异常。

编写程序:输入一个整数n,计算n的阶乘并捕捉可能出现的异常。
实验要求:
(1)阶乘方法命名为factorial();
(2)无论是否出现异常,最后都要能够显示:“Finish computing factorial number.”。
(3)当输入的数大于20时,请显示的“数字过大,无法计算”的异常

import java.util.*; 
public class T {
    public static void main(String[] args){
       try{ 
           Scanner input = new Scanner(System.in); 
           String num = input.nextLine();
           if(!num.match("[^0]\\d+$")) {
               throw new RuntimeException("输入的不是自然数");
           } 
           if(Long.parseLong(num) >20) {
               throw new RuntimeException("数字过大,无法计算");   
            }
            long result = factorial(Long.parseLong(num)); 
            System.out.println(result); 
        }catch(Exception e){
            throw new RuntimeException(e);
        }finally{
            System.out.println("Finish computing factorial number"); 
        }
    } 
    /**计算阶乘**/
    public static long  factorial(long n) {
        if(n==1) return 1 ;  
        return n * factorial(n-1); 
    }  
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-06
import java.util.Scanner;
public class TestMax {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数");
int x = input.nextInt();
try {
if (x > 20)
throw new Exception("数字过大,无法计算");
factorial(x);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
} finally {
System.out.println("Finish computing factorial number");
}
}
public static void factorial(int n) {
int all = 1;
for (int i = 1; i < n + 1; i++) {
all *= i;
}
System.out.println(all);
}
}
相似回答