Java 使用星号制作ASCII沙漏
我知道有人问过,但我很难理解其他程序和嵌套循环,如果有人有一个技巧来跟随嵌套循环并用星号制作形状,我想知道,因为这真的让我困惑 以下是我在多次尝试和实验后编写的代码:Java 使用星号制作ASCII沙漏,java,loops,nested-loops,ascii-art,nested-for-loop,Java,Loops,Nested Loops,Ascii Art,Nested For Loop,我知道有人问过,但我很难理解其他程序和嵌套循环,如果有人有一个技巧来跟随嵌套循环并用星号制作形状,我想知道,因为这真的让我困惑 以下是我在多次尝试和实验后编写的代码: 扫描仪输入=新扫描仪(System.in); System.out.print(“输入一个数字:”); int userentry=input.nextInt(); 对于(int i=0;i
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一个数字:”);
int userentry=input.nextInt();
对于(int i=0;i=i;j--){
系统输出打印(“*”);
}
System.out.println();
}
for(int i=0;i 对于(int j=0;j由于用于输入/输出/代码的字体中的每个字符都具有相同的宽度,因此必须将每次迭代减少2,如:
****
**
**
****
或
而不是一个。
对于间距,请使用以下命令:
for (int i = userentry; i > 0; i -= 2) {
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
for (int j = 0; j < i; j++) System.out.print("*");
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
System.out.println();
}
for (int i = (userentry % 2 == 0 ? 2 : 3); i <= userentry; i += 2) {
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
for (int j = 0; j < i; j++) System.out.print("*");
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
System.out.println();
}
for(int i=userentry;i>0;i-=2){
对于(intj=0;j<(userentry-i)/2;j++)系统输出打印(“”);
用于(int j=0;j对于(int i=(userentry%2==0?2:3);i由于用于输入/输出/代码的字体中的每个字符都具有相同的宽度,因此必须将每次迭代减少2,如:
****
**
**
****
或
而不是一个。
对于间距,请使用以下命令:
for (int i = userentry; i > 0; i -= 2) {
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
for (int j = 0; j < i; j++) System.out.print("*");
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
System.out.println();
}
for (int i = (userentry % 2 == 0 ? 2 : 3); i <= userentry; i += 2) {
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
for (int j = 0; j < i; j++) System.out.print("*");
for (int j = 0; j < (userentry - i) / 2; j++) System.out.print(" ");
System.out.println();
}
for(int i=userentry;i>0;i-=2){
对于(intj=0;j<(userentry-i)/2;j++)系统输出打印(“”);
用于(int j=0;j[-n,n]
内的数字矩阵,其中每个点为:
m[i][j] = Math.abs(i) - Math.abs(j);
如果n=3
,则该矩阵如下所示:
0 1 2 3 2 1 0
-1 0 1 2 1 0 -1
-2 -1 0 1 0 -1 -2
-3 -2 -1 0 -1 -2 -3
-2 -1 0 1 0 -1 -2
-1 0 1 2 1 0 -1
0 1 2 3 2 1 0
int n=3;
IntStream.rangeClosed(-n,n)
.map(数学::abs)
.peek(i->IntStream.rangeClosed(-n,n)
.map(数学::abs)
.mapToObj(j->iSystem.out.println());
输出:
* * * * * * *
* * * * *
* * *
*
* * *
* * * * *
* * * * * * *
另请参见:您可以将沙漏可视化为范围[-n,n]
内的数字矩阵,其中每个点为:
m[i][j] = Math.abs(i) - Math.abs(j);
如果n=3
,则该矩阵如下所示:
0 1 2 3 2 1 0
-1 0 1 2 1 0 -1
-2 -1 0 1 0 -1 -2
-3 -2 -1 0 -1 -2 -3
-2 -1 0 1 0 -1 -2
-1 0 1 2 1 0 -1
0 1 2 3 2 1 0
int n=3;
IntStream.rangeClosed(-n,n)
.map(数学::abs)
.peek(i->IntStream.rangeClosed(-n,n)
.map(数学::abs)
.mapToObj(j->iSystem.out.println());
输出:
* * * * * * *
* * * * *
* * *
*
* * *
* * * * *
* * * * * * *
另请参见:想象一个坐标平面在垂直和水平范围内。您可以使用两个嵌套for循环和一个if-else语句将其打印出来:
int n=3;
对于(int i=-n;i想象一个垂直和水平范围内的坐标平面[-n,n]
。您可以使用两个嵌套for循环和一个if-else语句将其打印出来:
int n=3;
对于(int i=-n;i)