题目:
fact()方法的功能是求n!,阶乘类型是byte类型。当n!的值超出byte数据类型的范围时抛出异常。在主方法中输入n!的值。要求分别用下面三种方法进行异常处理:
(1)fact()方法捕获异常
(2)fact()方法声明异常,主方法捕获异常
(3)fact()方法和主方法都声明异常
(1)
package chapter4;
import java.util.Scanner;
public class Fact {
public static void main(String[] args) throws OutOfRangeException {
byte n;
Scanner in=new Scanner(System.in);
System.out.println("输入n:");
n=in.nextByte();
byte n1=fact(n);
System.out.println("n!="+n1);
}
static byte fact(byte x) throws OutOfRangeException{
byte n=1;
try {
for(byte i=1;i<x+1;i++)
n=(byte) (n*i);
if (n>127||n<0)
throw new OutOfRangeException();
}catch(OutOfRangeException e) {
System.out.println(e.getMessage());
}
return n;
}
}
(2)
package chapter4;
import java.util.Scanner;
public class Fact {
public static void main(String[] args) throws OutOfRangeException {
byte n;
Scanner in=new Scanner(System.in);
System.out.println("输入n:");
n=in.nextByte();
try {
byte n1=fact(n);
System.out.println("n!="+n1);
}catch(OutOfRangeException e) {
System.out.println(e.getMessage());
}
}
static byte fact(byte x) throws OutOfRangeException{
byte n=1;
for(byte i=1;i<x+1;i++)
n=(byte) (n*i);
if (n>127||n<0)
throw new OutOfRangeException();
return n;
}
}
(3)
package chapter4;
import java.util.Scanner;
public class Fact {
public static void main(String[] args) throws OutOfRangeException {
byte n;
Scanner in=new Scanner(System.in);
System.out.println("输入n:");
n=in.nextByte();// TODO 自动生成的方法存根
byte n1=fact(n);
System.out.println("n!="+n1);
}
static byte fact(byte x) throws OutOfRangeException{
byte n=1;
for(byte i=1;i<x+1;i++)
n=(byte) (n*i);
if(n>127||n<0)
throw new OutOfRangeException();
return n;
}
}