我只是为练习编写了这个小函数,但抛出了一个异常("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();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您是否正在使用其他语言翻译此代码?您循环遍历字符串,直到到达空字符("\0"),但Java通常不会在字符串中使用它们.在C中,这可行,但在你的情况下,你应该尝试
i < y.length()
Run Code Online (Sandbox Code Playgroud)
代替
y.charAt(i) != '\0'
Run Code Online (Sandbox Code Playgroud)
另外,
y.setCharAt(j,'\0')
Run Code Online (Sandbox Code Playgroud)
在你的代码的末尾不会调整字符串的大小,如果这是你期望的.你应该试试
y.setLength(j)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43808 次 |
| 最近记录: |