簡體   English   中英

字符串索引超出范圍:-1

[英]String index out of range: -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();

我在res [i] = filenames [i] .substring(beg,end)得到一個例外; 我無法想象發生了什么。謝謝提前:) PS我已經閱讀了所有的重復但沒有發生任何事情:(

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

返回-1 ,它可能有一個不包含的文件。

發生錯誤,因為文件名不包含' - '和'。'。 在這種情況下, indexOf返回-1 ,這不是substring的有效參數。

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

之后添加以下代碼

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

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

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

此代碼中的一個字符

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

找不到,所以begend等於-1。 這就是為什么在使用負參數調用substring時遇到異常的原因。

問題出在名為“.directory”的KDE文件中。非常感謝大家:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM