Индекс строки вне диапазона: -1 - PullRequest
1 голос
/ 27 марта 2011

У меня похожая проблема. Это фрагмент моего источника:

FileWriter fstream = new FileWriter("results_for_excel.txt");
BufferedWriter writer = new BufferedWriter(fstream);
String sourceDirectory = "CVs";
File f = new File(sourceDirectory);
String[] filenames = f.list();
Arrays.sort(filenames);
String[] res = new String[filenames.length];
for (int i = 0; i < filenames.length; i++) {
    System.out.println((i + 1) + " " + filenames[i]);
}


for (int i = 0; i < filenames.length; i++) {
    int beg = filenames[i].indexOf("-");
    int end = filenames[i].indexOf(".");
    res[i] = filenames[i].substring(beg,end);
    System.out.println((i+1)+res[i]);
    writer.write(res[i] + "\n");
}
writer.flush();
writer.close();

Я получаю исключение при res [i] = filenames [i] .substring (beg, end); Я не могу понять, что происходит. Спасибо заранее :) П.С. Я прочитал все дубликаты, но ничего не произошло: (

Ответы [ 6 ]

1 голос
/ 27 марта 2011

Добавьте следующий код после

int beg = filenames[i].indexOf("-");
int end = filenames[i].indexOf(".");

Это отобразит имя файла в неправильном формате;

if (beg == -1 || end == -1)
{
    System.out.println("Bad filename: " + filenames[i]);
}
1 голос
/ 27 марта 2011

Либо beg, либо end равно -1. Это означает, что имя файла не содержит - или .. Все просто:)

1 голос
/ 27 марта 2011

Ошибка возникает, потому что имя файла не содержит ни «-», ни «.».В этом случае indexOf возвращает -1, что не является допустимым параметром для substring.

1 голос
/ 27 марта 2011

Либо

int beg = filenames[i].indexOf("-");
int end = filenames[i].indexOf(".");

возвращает -1, возможно, есть файл, который не содержит ни того, ни другого.

0 голосов
/ 27 марта 2011

Проблема была в файле KDE с именем ".directory". Большое спасибо всем вам:)

0 голосов
/ 27 марта 2011

Один из символов в этом коде

int beg = filenames[i].indexOf("-");
int end = filenames[i].indexOf(".");

не найден, поэтому либо beg, либо end равно -1.Вот почему вы получили исключение при вызове substring с отрицательными аргументами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...