重复整数n次

时间:2016-01-14 09:01:09

标签: java for-loop iteration

我正在尝试用整数形成金字塔。 I.E数字3:

3
33
333

所以根据我发现的答案,我做了这个:

int n = 8;
String n2 = Integer.toString(n);

for (int i=0; i<n; i++) {
    System.out.println(StringUtils.repeat(n2, i));
}

但它不起作用并且不是最理想的。有没有一种简单的方法可以在同一行中重复整数n次?

编辑:让自己成为一个方法..不是很开心,但似乎我不能只使用像System.out.println(int x,int n次)这样的东西

int n = 8;

for (int i=0; i<=n; i++) {
    for (int j=0; j<i; j++) {
        System.out.print(n + " ");
    }
    System.out.println("");
}

5 个答案:

答案 0 :(得分:7)

好的,可以在没有使用Java-8流的显式循环的情况下执行此操作:

IntStream.range(1,n).forEach(i -> System.out.println(StringUtils.repeat(n2, i));

甚至没有apache-commons

 IntStream.range(0,n).forEach(i -> System.out.println(String.join("", Collections.nCopies(i+1, n2))));

但无论如何在内部所有这些方法都使用循环。

答案 1 :(得分:0)

如下所示。

public class Test{

    public static String repeat(String str, int times) {
        return new String(new char[times]).replace("\0", str);
    }

    public static void main(String[] args) {
        for (int i = 1; i < 5; i++) {
            System.out.println(repeat("3", i));
        }
    }
}

<强>输出

3
33
333
3333

答案 2 :(得分:0)

您可以尝试使用StringBuilder

你仍然需要循环,但性能可能稍微好一些。

function getSubstateName() {
    var stateArray =  $state.current.name.split('.');
    return stateArray[stateArray.length - 1];
}

这可以满足您的需求,但不会影响您的想法。我们只需构建一个字符串,而不是重复创建重复的整数字符串,而不是重复它的工作。

要真正回答您的问题,您可以使用此代码,但我会推荐第一种方法:

int n = 8;
String n2 = Integer.toString(n);
StringBuilder builder = new StringBuilder(n);
for(int i = 0; i < n; i++) {
    builder.append(n2);
    System.out.println(builder.toString());
}

这只有在整数为0&lt; = number&lt; 10。

答案 3 :(得分:0)

要与整数保持一致,您可以每次存储最后一个值,并添加下一部分:

i = 0 - &gt;你得到3

i = 1 - &gt;你得到33(i0 + 30)

i = 2 - &gt;你得到333(i1 + 300)

int lastValue = 0;

for (int i=0; i<=n; i++) {

  int currentValue  = lastValue + (n * Math.pow(10, i));
  System.out.println(currentValue);
  lastValue = currentValue ;
}

这显然仅适用于一位数整数。

答案 4 :(得分:0)

  

我的意思是将int转换为字符串并不是最理想的吗? AIN&#39;吨   有直接的方法来处理整数? -

如果您不想将int转换为字符串。

这可能会对你有帮助。

    int n = 3;
    for (int i=1; i<=n; i++) {
    System.out.println(new String(new char[i]).replace("\0", n+""));
    }