我希望我的factorial输出一个语句打印出来"无效错误。没有负数"当我使用try -catch方法时,但每次它都不会打印我的错误语句。这是我的代码:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class App {
public static void main(String[] args) {
int value;
//E.g. 4!=4*3*2*1
Scanner keyboard=new Scanner(System.in);
System.out.println("Enter a value for factorial");
value=keyboard.nextInt();
try{
System.out.println(calculate(value));}catch(NumberFormatException e){
System.out.println("invalid error. No negative numbers");
}
}
private static int calculate(int value){
if(value==1 || value==0){
return 1;
}
return calculate(value-1)*value;
}
}
我做错了什么
答案 0 :(得分:5)
你没有抛出异常
private static int calculate(int value) throws NumberFormatException {
if (value < 0) throw new NumberFormatException("invalid error. No negative numbers");
if(value==1 || value==0){
return 1;
}
return calculate(value-1)*value;
}