java - 使用三重嵌套 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 循环会是什么样子?
解决方案
这可以通过一个循环来完成,使用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
- 静态方法
String::join
从 JDK 8 开始可用 Collections::nCopies
自JDK 1.2起可用的静态方法
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);
}
推荐阅读
- python - 如何在 DataFrame 中执行 If 和 Else If 语句?
- python - 了解和评估模板匹配方法
- flutter - 在带有颤振的 iOS 模拟器上运行时出错
- python - “零”对象没有属性“罪”
- apache-spark - 在谈论 Hadoop、Spark 和大数据时,人们所说的“中间结果”是什么意思?
- amazon-web-services - 我看到 sls deploy 正在为我的 Lambda 函数自动创建一个 IAM 角色
- java - 添加参数以匹配 'add(int, ? extends Number)
- html - 与弹性框相反的方向垂直对齐文本
- c# - 如何为 Blazor(服务器端)和 MVC Core 使用相同的布局?
- amazon-web-services - 是否可以在 CodeDeploy 的 CLI 中查看部署事件?