2011-03-27 173 views
1

我有一個類似problem.This是我的源的一個片段:字符串索引超出範圍:-1

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(); 

我得到RE的例外[I] =文件名[I] .substring(BEG ,結束); 我無法弄清楚這是怎麼回事on.Thanks提前:) PS我看了所有的重複,但什麼都沒有發生:(

回答

1

添加以下代碼後

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

這將顯示文件名是在錯誤的格式;

if (beg == -1 || end == -1) 
{ 
    System.out.println("Bad filename: " + filenames[i]); 
} 
1

要麼

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

返回一個-1,它可能有它沒有按文件「T包含任一

+0

更改'Eithor'到'Either'。 – 2011-03-27 11:22:04

1

發生錯誤,因爲文件名不包含這兩者。‘ - ’和」'在這種情況下返回indexOf-1這對於substring有效的參數

0

一個字符在這個代碼

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

沒有找到,所以無論是begend等於-1。這就是爲什麼你在調用substring時有異議的原因。

1

begend是-1。這意味着文件名不包含-.。就這麼簡單:)

0

問題是在被稱爲「名爲.directory」。謝謝非常非常大家一個KDE文件: