如何处理线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:在Factorl.main(Factorl.java:长度为0的索引4越界

时间:2019-08-30 06:20:03

标签: java

class Factorl
{
    public static void main(String args[])

    {
              long n,fact=1;       

              n=Long.parseLong(args[0]);

          for(int i=1;i<=n;i++)
          {
                 fact=fact*i;
          }

          System.out.println("fact="+fact);
    }
}

在线程“ main”中显示异常

  

java.lang.ArrayIndexOutOfBoundsException:Factorl.main处为0

2 个答案:

答案 0 :(得分:0)

因为您使用命令行参数作为程序行中的输入

  n=Long.parseLong(args[0]);

在这里您应该传递一个值来运行这样的程序

  compile by > javac Factorl.java  
   run by > java Factorl 5

    Output:
    fact=120

答案 1 :(得分:0)

如果没有任何内容传递给您的args数组(ref),则该数组可能为空。检查其是否为空。

class Factorl {
    public static void main(String args[]) {
        long n, fact = 1;
        if (args.length != 1) {
            System.out.println("Factorial for what?");
            return;
        }
        n = Long.parseLong(args[0]);
        for (int i = 1; i <= n; i++) {
            fact = fact * i;
        }
        System.out.println("fact=" + fact);
    }
}

我个人认为您不会计算Long的阶乘。阶乘增长非常快。请注意,20!2.432902e+18。多数民众赞成在那。 现在,您可以参考@MangduYogii的答案“如何传递命令行参数”。