2014-11-01 105 views
0

你好当我试图运行此代码我收到以下错误 我明白的时候是没有的主要功能发生这种情况,但我有一个主要机能的研究..异常在线程“主要”

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]))); 
    } 

} 
+0

好吧,没有它没有发生,当你没有主要功能或没有。在运行代码时,你是否将一些参数传递给命令行? – user2336315 2014-11-01 11:40:17

+0

打印出args.length的值,你会看到问题。如果args没有条目,则[0]索引超出范围。 – Scooter 2014-11-01 11:42:49

回答

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"); 
} 
0

你要的电话:

args[0] 

args是空的。

你叫你的程序的东西,如:

java -jar MyJar.jar 

但是你应该有把它称为:

java -jar MyJar.jar /a/path/to/some/directory 

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

1

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

调用方法(numberOfFiles)时,您正在访问参数。

+0

这应该是一个评论 – n00bProgrammer 2014-11-01 11:48:46

+0

对不起,我不知道你的意思? 我很新,只是认为这是我如何帮助OP? – Gooair 2014-11-01 12:18:18

相关问题