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