你好,当我试图运行这段代码时,我遇到了以下错误 我明白当没有主要功能时会发生这种情况,但我确实有一个主要的功能..
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 :(得分: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
即。你需要将一个参数传递给你的应用程序。