Java 使用递归替换字符串中某个索引处的字符
嗨,我正在尝试创建一个方法来递归地删除单词中的空格。到目前为止我都这么做了,我真的不知道为什么它不起作用Java 使用递归替换字符串中某个索引处的字符,java,string,recursion,substring,Java,String,Recursion,Substring,嗨,我正在尝试创建一个方法来递归地删除单词中的空格。到目前为止我都这么做了,我真的不知道为什么它不起作用 public static String compact (String line) { for (int x = 0 ; x < line.length () ; x++) { if (line.charAt (x) == ' ') { String newLine = line.substring (0, x
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;
}
公共静态字符串压缩(字符串行)
{
对于(int x=0;x
这只返回原始字符串,不删除任何空格。
有人能告诉我我做错了什么吗,谢谢。只要拆下
else break;
部分,因为如果字符串的第一个字符不是空白,循环将终止
也代替
String newLine = line.substring (0, x) + line.substring (x);
与
因为您实际上并没有删除空格,而是一次又一次地复制整个字符串。这就是为什么会出现堆栈溢出错误
方法应如下所示:
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;
}
公共静态字符串压缩(字符串行){
对于(int x=0;x
只需卸下
else break;
部分,因为如果字符串的第一个字符不是空白,循环将终止
也代替
String newLine = line.substring (0, x) + line.substring (x);
与
因为您实际上并没有删除空格,而是一次又一次地复制整个字符串。这就是为什么会出现堆栈溢出错误
方法应如下所示:
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;
}
公共静态字符串压缩(字符串行){
对于(int x=0;x
您可以摆脱for循环,并在一行代码中修复它
就用
//changes a string "moon shine" to "moonshine"
String newLine = line.trim().replaceAll(" +", "");
System.out.println(newLine);
您可以去掉for循环,并在一行代码中修复它
就用
//changes a string "moon shine" to "moonshine"
String newLine = line.trim().replaceAll(" +", "");
System.out.println(newLine);
你为什么要这样做/提示:删除for循环,添加一个参数来确定“char array”中当前选定的字符,这样做您可以完成一个完全递归的循环,也不要忘记删除空格后字符数会发生变化,你也必须给他一个新的字符串,但实际上这是一个糟糕的做法,我不认为对这样的东西使用递归是有意义的。如果你想练习递归,可以对文件夹、删除等进行操作。你为什么要这样做/提示:删除for循环,添加一个参数来确定“char array”中当前选定的字符,这样做您可以完成一个完全递归的循环,也不要忘记删除空格后字符数会发生变化,你也必须给他一个新的字符串,但实际上这是一个糟糕的做法,我不认为对这样的东西使用递归是有意义的。如果你想练习递归,可以使用文件夹、删除等方法,并替换String newLine=line.substring(0,x)+line.substring(x)代码>带有字符串换行符=line.substring(0,x)+line.substring(x+1)代码>我将添加它。谢谢@henryabra@Noob,查看更新的答案。我已经对它进行了测试,它可以很好地工作并替换String newLine=line.substring(0,x)+line.substring(x)代码>带有字符串换行符=line.substring(0,x)+line.substring(x+1)代码>我将添加它。谢谢@henryabra@Noob,查看更新的答案。我已经测试过了,效果很好,我很确定OP是作为递归中的类练习来做的,而不是认为这是最好的方法…我很确定OP是作为递归中的类练习来做的,而不是认为这是最好的方法。。。