我尝试编写一个递归方法,向后显示字符串的内容。而且我不明白为什么方法中的while循环不能像我预期的那样工作,它会保持循环和循环。 但是,如果我使用 if / else 循环,它似乎完美无缺。 但我只是想了解while循环会发生什么。
public class printString{
void BitString(String a, int i){
while (i > 0){
System.out.println(i);
//System.out.println(a.substring(i-1, i));
i--;
BitString(a.substring(0, i), i);
}
return;
}
public static void main(String args[]){
printString print = new printString();
String str = "I am a beginner.";
int i = str.length() -1;
print.BitString(str, i);
}
}
答案 0 :(得分:0)
位修改代码。
这里缺少4件事
1)获得子串 子串方法的含义是:子串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符 这里每次丢失最后一个char,因为该索引超出范围异常正在发生
2)在子串方法之后,应该减少计数(长度),同时传递参数
3)return语句丢失.. !!,必须有return语句,否则程序运行无限次。
4)while条件while(i> = 0)
void BitString(String a, int i){
while (i >= 0){
System.out.print(a.charAt(i));
//i--;
BitString(a.substring(0, i), --i);
return;//Missing return
}
return;
}