【问题标题】:Java - printing one character at a time using recursionJava - 使用递归一次打印一个字符
【发布时间】:2015-05-12 05:10:44
【问题描述】:

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

    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"));
     }

显示:

   avaavaJava Javao Javalo Javallo Javaello JavaHello JavaHello Java

非常感谢您的帮助

【问题讨论】:

  • 您可以使用添加"\n"向字符串添加换行符
  • 实际上,由于您要附加到字符串,因此您需要在 displayStuffR(int, String) 函数中的某个位置附加 \n。另外,一个问题:在你想要的输出中,第二行应该是“va”吗?
  • @thesentiment 是的,应该是因为我打字很快

标签: java recursion newline


【解决方案1】:

当您返回一个字符串时,使用新行作为显示函数中返回的字符串,类似于这样

return x.substring(x.length()-1-i)+"\n" + displayStuffR(i+1,x);

并将您的 if 条件更新为

i &lt; x.length()-1

【讨论】:

  • 非常感谢您的帮助!
【解决方案2】:

http://ideone.com/I5XgXK 开始,您需要通过在代码中添加"\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"));
 }

【讨论】:

  • 见附上的链接。
  • OP 的要求说他不需要添加 Hello Java 两次,您的解决方案是打印两次 Hello Java
【解决方案3】:

您也可以使用此方法。

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

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

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    相关资源
    最近更新 更多