我编写这个小函数只是为了练习,但是抛出了一个异常(“字符串索引超出范围: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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)