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 循环是什么样的?
这可以通过一个循环来完成,使用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
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);
}
Run Code Online (Sandbox Code Playgroud)
我会在你的两个循环之间使用另一个循环。
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)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |