是否可以打印字符串“x”次?
例如,如果给出了字符串
String q = "*";
假设用户输入数字'4'表示他们希望字符串重复的次数。
该程序将打印:
****
答案 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仍将在技术上循环。