线程“main”中的异常

时间:2014-11-01 11:39:29

标签: java exception

你好,当我试图运行这段代码时,我遇到了以下错误 我明白当没有主要功能时会发生这种情况,但我确实有一个主要的功能..

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at FilterAs.main(FilterAs.java:21)

这是我的代码

  import java.io.*;
public class FilterAs {
public static int numberOfFiles(File directory) {  
      if (directory.isFile())  
         return(1);  
      else {  
         File[] list = directory.listFiles();  

         int count = 0;  

         if (list != null)  
            for (File file : list)  
               count += (file.isFile()) ? 1 : numberOfFiles(file);  

         return(count);  
      }  
   }  

   public static void main(String[] args) {  
      System.out.println(numberOfFiles(new File(args[0])));  
   }  

}  

3 个答案:

答案 0 :(得分:1)

我猜你忘记为你的程序设置参数了吗?

调用方法时访问参数(numberOfFiles)。

答案 1 :(得分:0)

如果没有传递给程序的命令行参数,则以下内容将抛出ArrayIndexOutOfBoundsException,因为args数组将为空。

System.out.println(numberOfFiles(new File(args[0])));  

在访问args数组之前,您应该检查是否存在此类参数:

if (args.length > 0) {
    System.out.println(numberOfFiles(new File(args[0])));  
} else {
    System.out.println("Please supply a file name"); 
}

答案 2 :(得分:0)

您可以致电:

args[0]

但是args是空的。

您已使用以下内容调用您的程序:

java -jar MyJar.jar

但你应该用:

来调用它
java -jar MyJar.jar /a/path/to/some/directory

即。你需要将一个参数传递给你的应用程序。