Java-使用递归一次打印一个字符

Java-使用递归一次打印一个字符,java,recursion,newline,Java,Recursion,Newline,我试图从字符串中递归地一次打印一个字符,例如: a va ava Java Java o Java lo Java llo Java ello Java Hello Java 但我的代码如下: public static String displayStuffR(String x){ return displayStuffR(0,x); } public stati

我试图从字符串中递归地一次打印一个字符,例如:

    a
    va
    ava
    Java
     Java
    o Java
    lo Java
    llo Java
    ello Java
    Hello Java
但我的代码如下:

    public static String displayStuffR(String x){
        return displayStuffR(0,x);
        }
    public static String displayStuffR(int i,String x){
        if (i<x.length()){
            return x.substring(x.length()-1-i) + displayStuffR(i+1,x);}
        return x;
    }
    public static void main(String args[]){
       System.out.print(displayStuffR("Hello Java"));
     }

如果您当时返回一个字符串,请在display函数中为返回的字符串使用新行,如下所示

返回x.substring(x.length()-1-i)+“\n”+displaystuffer(i+1,x)

并将您的if条件更新为

i

您需要通过在代码中添加
“\n”
向字符串添加换行符。
请参阅以下代码:

public static String displayStuffR(String x){
    return displayStuffR(0,x);
    }
public static String displayStuffR(int i,String x){
    if (i < (x.length()-1)){
        return x.substring(x.length()-1-i)+"\n" + displayStuffR(i+1,x);}
    return x;
}
public static void main(String args[]){
   System.out.print(displayStuffR("Hello Java"));
 }
公共静态字符串显示填充器(字符串x){
返回显示填充器(0,x);
}
公共静态字符串显示填充器(int i,字符串x){
如果(i<(x.长度()-1)){
返回x.substring(x.length()-1-i)+“\n”+displayStuffR(i+1,x);}
返回x;
}
公共静态void main(字符串参数[]){
System.out.print(DisplayStuffer(“Hello Java”));
}

或者,您可以使用此方法

static void  recursivePrint(String text) {
    if (text.length() == 0)
        return;

    recursivePrint(text.substring(1, text.length()));
    System.out.println(text);
}

实际上,您可以使用adding
“\n”
将换行符添加到字符串,因为您要附加到字符串,所以需要在DisplayStuffer(int,string)函数的某个点上附加。另外,还有一个问题:在您想要的输出中,第二行是否应该是“va”?@感觉是的,应该是va。我正在快速键入此链接。OP的要求是他不需要添加Hello Java两次。您的解决方案正在打印
Hello Java
两次。非常感谢您的帮助!
static void  recursivePrint(String text) {
    if (text.length() == 0)
        return;

    recursivePrint(text.substring(1, text.length()));
    System.out.println(text);
}