打印字符串'X'时间(无循环)

时间:2013-10-18 17:18:58

标签: java string

是否可以打印字符串“x”次?

例如,如果给出了字符串

String q = "*";

假设用户输入数字'4'表示他们希望字符串重复的次数。

该程序将打印:

****

6 个答案:

答案 0 :(得分:11)

你可以像这样使用递归

private void printStar(int n){
    if(n > 0){
        System.out.print("*");
        printStar(n-1);
    }
}

最初调用这样的方法 - printStar(4);

答案 1 :(得分:11)

您可以使用给定长度的char[]数组构建String,然后用*替换每个字符:

String repeatedStar = new String(new char[4]).replace('\0', '*');

好吧,那会在内部使用一个循环。

答案 2 :(得分:4)

虽然它可能在内部循环,但您可以在用户代码中使用Guava的Strings避免循环:

System.out.println(Strings.repeat("*", 4));

答案 3 :(得分:4)

Apache commons common-lang开始,使用StringUtils.repeat

System.out.println(StringUtils.repeat(q,4));

答案 4 :(得分:3)

递归

printStar(int x)
{
   if(x > 0)
   {
     System.out.print("*");
     printStar(x-1);
   }
}

答案 5 :(得分:1)

我知道这一点可能是使用递归,但在这种情况下的递归是一个可怕的解决方案。这是一个更有效的解决方案(尽管它很可能在Arrays.fill使用循环!)

public static void printNX(int n)
{
    char[] c = new char[n];
    Arrays.fill(c, 'x');
    System.out.println(new String(c));
}

当然,Arrays.fill可能会调用本机代码,该代码经过优化,可以使用有效的指令来填充数组并避免循环。但你永远不知道。

我不一定同意使用递归“不循环”;所有这一切都在颠覆堆栈;通过不断跳回到递归函数的顶部,CPU仍将在技术上循环。