Java-“字符串索引超出范围”异常

我写了这个小函数只是为了练习,但是抛出了一个异常(“字符串索引超出范围:29”),我不知道为什么…

(我知道这不是编写此函数的最佳方法,可以使用正则表达式。)

这是代码:

public String retString(String x) 

{

int j=0;

int i=0;

StringBuffer y = new StringBuffer(x);

try

{

while ( y.charAt(i) != '\0' )

{

if (y.charAt(i) != ' ')

{

y.setCharAt(j, y.charAt(i));

i++;

j++;

}

else

{

y.setCharAt(j, y.charAt(i));

i++;

j++;

while (y.charAt(i) == ' ')

i++;

}

}

y.setCharAt(j,'\0');

}

finally

{

System.out.println("lalalalololo " );

}

return y.toString();

}

回答:

您是否正在从其他语言翻译此代码?您要遍历字符串,直到到达空字符("\0"),但Java通常不会在字符串中使用这些字符。在C语言中,这可以工作,但是在您的情况下,您应该尝试

i < y.length()

代替

y.charAt(i) != '\0'


此外,

 y.setCharAt(j,'\0')

如果您期望的是,在代码末尾不会调整字符串的大小。您应该尝试

y.setLength(j)

以上是 Java-“字符串索引超出范围”异常 的全部内容, 来源链接: utcz.com/qa/423497.html

回到顶部