我正在使用Java 8,我需要获得此输出: XXXXX XXXX XXX XX X
其中“X”是一个字符串。
我写了一个简单的代码:
String s = new String ("X");
int j = 5;
for (int i = 0; i<5; i--)
{
System.out.println(s);
j--;
if (j < 1)
break;
自然,得到这个:
X X X X X
我明白我需要以某种方式让Java重复打印字符串i次(在我为i分配的循环中),但不知道如何(既不重复也不重复)。最好的方法是什么?谢谢!
你需要做的就是:
final String s = "X";
for (int i = 5; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print(s);
}
System.out.println();
}
哪个输出:
XXXXX
XXXX
XXX
XX
X
你可以在while
里面使用for
循环
String s = "X";
for (int i = 5; i > 0; i--) {
int j=0;
while(i>j++)
System.out.print(s);
System.out.println();
}
您可以使用递归打印操作来实现此操作而无需循环。
import java.util.Collections;
public class Test {
public static void main(final String[] args) {
recursiveTriangle(10);
}
public static void recursiveTriangle(final int length) {
if (length <= 0 ) {
return;
}
System.out.println(String.join("", Collections.nCopies(length, "X")));
recursiveTriangle(length-1);
}
}
尝试使用两个内部循环:
public static void main(String[] args) {
String s = "X";
for (int i = 5; i > 0; i--) {
for (int j = i; j > 0; j--) {
System.out.print(s);
}
System.out.println();
}
}
另一种使用Java 8流的解决方案
public static void main(String[] args) {
final String s = "X";
IntStream.iterate(5, operand -> operand - 1)
.limit(5)
.forEach(value -> {
IntStream.range(0, value)
.forEach(val2 -> System.out.print(s));
System.out.println();
});
}
concat在这里是另一种选择:
String s = "";
for (int i = 5; i>0; i--) {
String s1 = "";
for (int j = i; j > 0; j--){
s1 += s.concat("X");
}
System.out.println(s1);
}