我正在尝试用整数形成金字塔。 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("");
}
答案 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+""));
}