您好我试图创建一个方法来递归地从单词中删除空格。到目前为止我已经这样做了,我真的不确定它为什么不起作用。
public static String compact (String line)
{
for (int x = 0 ; x < line.length () ; x++)
{
if (line.charAt (x) == ' ')
{
String newLine = line.substring (0, x) + line.substring (x);
return compact (newLine);
}
else
break;
}
return line;
}
这只返回原始字符串而不删除任何空格。 有人可以告诉我,我做错了什么,谢谢。
答案 0 :(得分:4)
只需删除
即可else break;
部分,因为如果String的第一个字符不是空格,则循环将终止
同时替换
String newLine = line.substring (0, x) + line.substring (x);
与
String newLine = line.substring (0, x) + line.substring (x + 1);
因为你实际上没有删除空格,而是一遍又一遍地复制整个字符串。这就是你获得StackOverflowError
。
该方法应如下所示:
public static String compact(String line) {
for (int x = 0; x < line.length(); x++) {
if (line.charAt(x) == ' ') {
String newLine = line.substring (0, x) + line.substring (x+1);
return compact(newLine);
}
}
return line;
}
答案 1 :(得分:0)
你可以摆脱for循环并在一行代码中修复它......
只需使用..
//changes a string "moon shine" to "moonshine"
String newLine = line.trim().replaceAll(" +", "");
System.out.println(newLine);