簡體   English   中英

為什么會出現java.lang.StringIndexOutOfBoundsException?

[英]Why is there a java.lang.StringIndexOutOfBoundsException?

我正在編寫一個程序,它應該掃描一行中的所有字符,看看是否有“)_”。 如果有,則程序檢查是否有任何嵌套括號,然后轉換括號中的某些字符串。 但是,每次運行程序時都會出現StringIndexOutOfBoundsException。 我不知道為什么,因為我已經將字符串長度減去2所以它應該是一個有效的索引,如下所示:

for(int i=line.length()-2;i>0;i--){

這是導致問題的一行:

if(line.charAt(i+1)=='{'){

這是我的代碼:

private static int checkNestedParen(String line){
    int count=0;
    for(int i=line.length()-1;i>=0;i-- ){
        if(line.charAt(i)==')')
            count++;
        if(line.charAt(i)=='('&&count==0)
            return i;
        if(line.charAt(i)=='(')
            count--;
    }
    return 0;
}
public static void main(String[] args) throws FileNotFoundException {
while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        char toChecko=')';
        for(int i=line.length()-2;i>0;i--){
            if(line.charAt(i)==toChecko&&line.charAt(i+1) == '_'){
                String substring = line.substring(0,i);
                int openParen = checkNestedParen(substring);
                a = line.substring(openParen, i);
                beforeLine=line.substring(0, openParen);
            }
            if(line.charAt(i+1)=='{'){
                int startBracker = i+2;
                int endBracker = line.indexOf('}',i+2);
                String n = line.substring(startBracker, endBracker);
                line =  beforeLine + "/pochhammer{" + a + "}{" + n + "}";
            }
            else {
                char n = line.charAt(i+1);
                line = beforeLine + "/pochhammer{" + a + "}{" + n + "}";
            }
        }
        writer.println(line);
    }

謝謝。

你正在改變循環中的line 如果將其更改為比ii-1的當前值更短的值,則根據拋出異常的行,您將在下次獲得異常。

暫無
暫無

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

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