JAVA (for 循环):实心菱形 和 空心菱形
第一次写博客,是个小白。由于数学不好,花了很长时间才写出来这两个图形。希望对和我一样有苦恼的人有帮助。
这两种菱形的基础其实就是矩形。
System.out.println("==================矩形================");
int n, m;
for( n=1; n<6; n++) {
for( m=1; m<6; m++) {
System.out.print("*");
}
System.out.println();
}
这是一个5 x 5的矩形,很简单就可以写出来。第一个for循环表示行数,第二个for循环表示每行“ * ”的个数。菱形也是同样的。
先来说实心菱形。
如果脑海中想不出来清晰的整个图,就提笔写一下。清楚这个菱形是由上面 1、3 、5,下面3 、1两部分组成的。而如果把上面的菱形补齐,这就会是刚刚写出来的矩形。所以菱形的左半部分的空格就分为
2 、1,和1 、2两部分。根据数字找出规律就可以写出代码了。
System.out.println("================实心菱形==============");
int i, j;
for( i=1; i<4; i++) { //上半部分整体的行数
for( j=1; j<4-i; j++) { //每一行先打印空格
System.out.print(" ");
}
for( j=1; j<=2*i-1; j++) { //再打印 * 。 i=1,2,3 j=1,3,5 可得规律j=2*i-1
System.out.print("*");
}
System.out.println();
}
for( i=1; i<3; i++) {
for( j=1; j<i+1; j++) {
System.out.print(" ");
}
for( j=i; j<5-i; j++) {
System.out.print("*");
}
System.out.println();
}
下面说空心菱形
空心的其实没比实心的难,只是有一点比较难想。
我刚开始写的时候总是在想,如何把中间的 * 给抹掉。其实换一个思路就很好写,比如只打印开头和结尾的 * 。
System.out.println("================空心菱形==============");
int a,b;
for( a=1; a<4; a++) {
for( b=1; b<4-a; b++) { //每一行先打印空格
System.out.print(" ");
}
for( b=1; b<=2*a-1; b++) { //再打印 *
if( b==1 || b==2*a-1) { //换个思路,只打印第一个和最后一个
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
for( a=1; a<3; a++) {
for( b=1; b<a+1; b++) {
System.out.print(" ");
}
for( b=a; b<5-a; b++) {
if( b==a || b==4-a) {
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}