Java 打印字符串';X';次数(无循环)
是否可以将字符串“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
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));