使用三重嵌套 for 循环来增加打印行的长度和计数

zmi*_*ler 4 java for-loop nested-for-loop

我很好奇如何编写这样的代码:

##
##
####
####
####
####
######
######
######
######
######
######
########
########
########
########
########
########
########
########
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

public class Main {
    public static void main(String[] args) {
        for (int i = 0; i <= 8; i += 2) {
            for (int j = 0; j < i; j++) {
                System.out.print('#');
            }
            System.out.println();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码显示:

##
####
######
########
Run Code Online (Sandbox Code Playgroud)

但它不会像有多少个字符那样打印行数。

所以基本上,它增加 2,然后它显示与循环内字符数量相同的行数。我想不通。

第三个嵌套的 for 循环是什么样的?

Ale*_*nko 7

这可以通过一个循环来完成,使用String::repeat/Collections.nCopies创建一行包含 N 个#字符,然后创建 N 行:

1.String::repeat 2018 年 9 月 JDK 11 发布后可用的
实例方法String::repeat

for (int i = 2; i <= 8; i += 2) {
    String row = "#".repeat(i) + "\n";
    String rows = row.repeat(i);
    System.out.print(rows);
}
Run Code Online (Sandbox Code Playgroud)

2. String::join+Collections.nCopies

import static java.lang.String.join;
import static java.util.Collections.nCopies;

//...

for (int i = 2; i <= 8; i += 2) {
    String row = join("", nCopies(i, "#"));
    String rows = join("\n", nCopies(i, row));
    System.out.println(rows);
}
Run Code Online (Sandbox Code Playgroud)


Mil*_*lgo 5

我会在你的两个循环之间使用另一个循环。

for (int i = 0; i <= 8; i += 2) {
    for (int k = 0; k < i; ++k) {
        for (int j = 0; j < i; j++) {
            System.out.print('#');
        }
        System.out.println();
    }
}
Run Code Online (Sandbox Code Playgroud)

它打印:

##
##
####
####
####
####
######
######
######
######
######
######
########
########
########
########
########
########
########
########
Run Code Online (Sandbox Code Playgroud)