gpt4 book ai didi

java - 为什么会出现java.lang.StringIndexOutOfBoundsException?

转载 作者:行者123 更新时间:2023-12-02 06:01:57 24 4
gpt4 key购买 nike

我正在编写一个程序,该程序应该扫描一行中的所有字符并查看是否有“)_”。如果存在,则程序检查是否存在嵌套括号,然后转换括号中的某些字符串。但是,每次运行该程序时都会出现 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 的当前值更短的值,则根据抛出异常的行,下次您将收到异常。

关于java - 为什么会出现java.lang.StringIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com