Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打印字符串';X';次数(无循环)_Java_String - Fatal编程技术网

Java 打印字符串';X';次数(无循环)

Java 打印字符串';X';次数(无循环),java,string,Java,String,是否可以将字符串“x”打印几次 例如,如果给定字符串 String q = "*"; 假设用户输入了数字“4”,表示他们希望字符串重复的次数 该程序将打印: **** 虽然它可能在内部循环,但您可以在用户代码中使用Guava的避免循环: System.out.println(Strings.repeat("*", 4)); 递归 printStar(int x) { if(x > 0) { System.out.print("*"); printSta

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

例如,如果给定字符串

String q = "*";
假设用户输入了数字“4”,表示他们希望字符串重复的次数

该程序将打印:

****

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

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

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

可以像这样使用递归

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

并最初像这样调用方法-
printStar(4)

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

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

好吧,那将在内部使用循环。

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

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

我不一定同意使用递归“不是循环”;所有这一切都是在打乱堆栈;CPU仍将通过不断跳回递归函数的顶部进行技术循环。

从,使用
StringUtils。重复

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

您可以使用递归。在后台,我想它也使用for循环。我不怀疑它,但对于避免用户代码中的循环非常有用;)println每隔一行打印一次!我更喜欢循环而不是递归调用。如果
n
非常大,您可能会得到
StackOverflowException
(或者是
错误
?)@Toochka-OPs要求“不”在代码中使用任何显式循环。
System.out.println(StringUtils.repeat(q,4));