[英]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
。 如果將其更改為比i
或i-1
的當前值更短的值,則根據拋出異常的行,您將在下次獲得異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.