Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加用户定义的异常和异常处理程序_Java_Exception Handling_Fibonacci - Fatal编程技术网

Java 添加用户定义的异常和异常处理程序

Java 添加用户定义的异常和异常处理程序,java,exception-handling,fibonacci,Java,Exception Handling,Fibonacci,我得到了一个叫做斐波那契数的程序,当程序的输入是一个负整数值时,没有输出。我试图通过添加用户定义的异常和异常处理程序来修改它,以便在输入为负整数值时可以采取适当的操作。我仍然很难理解异常是如何工作的,以及如何修改这个程序来做到这一点 public class FibonacciNumber { public static long fib(int n) { if (n <= 1) return n; else return fib(n-1) + fi

我得到了一个叫做斐波那契数的程序,当程序的输入是一个负整数值时,没有输出。我试图通过添加用户定义的异常和异常处理程序来修改它,以便在输入为负整数值时可以采取适当的操作。我仍然很难理解异常是如何工作的,以及如何修改这个程序来做到这一点

public class FibonacciNumber {
    public static long fib(int n) {
        if (n <= 1) return n;
        else return fib(n-1) + fib(n-2);
    }

    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);
        System.out.println(N);
        for (int i = 1; i <= N; i++)
            System.out.println(i + ": " + fib(i));
    }

}
公共类FibonacciNumber{
公共静态长fib(int n){

如果(n我将用外行的话解释这一点,因为您是Java新手。这是您如何修改程序以计算斐波那契数的方法。首先,您说您希望使用异常来控制程序的行为,以让用户知道出现了问题。当您抛出异常时,该异常将传播到调用程序hierarchy,直到它被显式异常处理程序捕获为止。如果没有找到捕获它的处理程序,则程序将简单地退出

在这种情况下,您希望抛出一个错误,以便下面的应用程序代码在被异常处理程序捕获之前不会执行

if (N < 0) {
  throw new IllegalArgumentException("Negative numbers are not allowed");
}
if(N<0){
抛出新的IllegalArgumentException(“不允许使用负数”);
}
这将抛出带有自定义消息的IllegalArgumentException,如果需要,可以向用户显示该消息

现在,正如我所说,这个异常必须在异常处理程序中捕获。由于您抛出了这个异常,紧跟其后的代码将不会被执行。换句话说,如果您将上面的代码段放在下面的代码之上,下面的代码将不会被执行

System.out.println(N);
for (int i = 1; i <= N; i++)
  System.out.println(i + ": " + fib(i));
System.out.println(N);

对于(int i=1;i)如果值为负,您希望发生什么?遵循斐波那契模式“遵循斐波那契模式”是什么意思?如果用户输入一个负数?这里的问题是你没有真正提出问题。请具体说明。如果用户输入无效,你想怎么办?非常感谢,是的,我在编程方面有点新手,很抱歉。
int N = Integer.parseInt(args[0]);
try {
   if (N < 0) {
     throw new IllegalArgumentException("Negative numbers are not allowed");
   }
   System.out.println(N);
   for (int i = 1; i <= N; i++) {
      System.out.println(i + ": " + fib(i));
   }
 } catch (IllegalArgumentException e) {
    System.out.println(e.getMessage());
 }