所以我试图编写一个方法来反转给定的字符串,但问题是它必须是一个 void 方法而不是一个 return 方法,这使得这变得很困难。我的代码对我来说似乎合乎逻辑,但它不起作用,所以我希望有人可以帮助我找出哪里出错了。
public class Reverser {
public String text, revText;
/**
* @param args
*/
public static void main(String[] args) {
Reverser greeting = new Reverser("Buildings");
greeting.reverse();
System.out.println(greeting.getText());
}
public Reverser(String _text){
text = _text;
}
public void reverse(){
int len = text.length();
if(len >= 1){
String last = text.substring(text.length() - 1, text.length());
revText += last;
text = text.substring(0, text.length() - 1);
Reverser loop = new Reverser(text);
loop.reverse();
}
}
public String getText(){
return revText;
}
}
最佳答案
这是一个想法:
public class Reverser {
private int idx;
private String text, revText;
public static void main(String[] args) {
Reverser greeting = new Reverser("Buildings");
greeting.reverse();
System.out.println(greeting.getText());
}
public void reverse() {
if (idx == text.length())
return;
revText = text.charAt(idx) + revText;
idx++;
reverse();
}
public Reverser(String _text) {
idx = 0;
text = _text;
revText = "";
}
public String getText() {
return revText;
}
}
与您的答案的根本区别在于,我使用索引属性来跟踪我在递归中的确切位置。这样我就不用修改原来的文本属性了。
关于java - 使用递归 void 方法反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254456/