我写这个小函数只是为了练习,但是抛出了一个异常(“String index out of range: 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 - "String index out of range"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319089/