2014-11-01 3 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

+0

Распечатайте значение args.length, и вы увидите проблему. если args не имеет записей, то индекс [0] выходит за пределы. – Scooter

ответ

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

+0

извините, я не знаю, что вы имеете в виду? Я довольно новый и просто подумал, что я помогаю ОП? – Gooair

Смежные вопросы