带有单个 for 循环的单分号解决方案,使用String#replace
方法自:1.5:
for (int i = 1; i < 5; i++)
// print one line containing
// newline symbols '\n'
System.out.print(Collections
// 'i * 2' copies of rows "##\n"
// returns List<String>
.nCopies(i * 2, Collections
// 'i * 2' copies of string "#"
// returns List<String>
.nCopies(i * 2, "#")
// List<String> to string
// [#, #]
.toString()
// #, #]
.replace("[", "")
// #, #
.replace("]", "")
// ##\n
.replace(", ", "") + "\n")
// List<String> to string
// [##\n, ##\n]
.toString()
// ##\n, ##\n]
.replace("[", "")
// ##\n, ##\n
.replace("]", "")
// ##\n##\n
.replace(", ", ""));
使用以下方法的双嵌套 for 循环的解决方案:1.8:String#join
for (int i = 1; i < 5; i++) {
for (int j = 0; j < i * 2; j++) {
String[] arr = new String[i * 2];
Arrays.fill(arr, "#");
System.out.print(String.join("", arr));
System.out.println();
}
}
使用双嵌套IntStream
usingString#repeat
方法的解决方案,因为:Java 11:
IntStream.range(1, 5)
.forEach(i -> IntStream.range(0, i * 2)
.forEach(j -> System.out.println("#".repeat(i * 2))));
输出:
##
##
####
####
####
####
######
######
######
######
######
######
########
########
########
########
########
########
########
########