首页 > 解决方案 > 使用三重嵌套 for 循环来增加打印行的长度和数量

问题描述

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

##
##
####
####
####
####
######
######
######
######
######
######
########
########
########
########
########
########
########
########

这是我尝试过的:

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();
        }
    }
}

此代码显示:

##
####
######
########

但它打印行的次数不如那里有多少个字符。

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

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

标签: javafor-loopnested-for-loop

解决方案


这可以通过一个循环来完成,使用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);
}

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);
}

推荐阅读