for循环打印空心菱形的新方法
程序员文章站
2022-06-04 11:35:06
相信大家在学习流程控制的循环结构时,一定都用for循环绘制过菱形和空心菱形吧,我记得我当时写的很麻烦,把一个菱形分为上下两部分,上面2重for循环,下面2重for循环,相信有很多的小伙伴都是这样做的吧,但是这样也造成了很多的代码冗余,今天无意间看到另外一种简便的方法,具体思路和实现过程如下图所示: ......
相信大家在学习流程控制的循环结构时,一定都用for循环绘制过菱形和空心菱形吧,我记得我当时写的很麻烦,把一个菱形分为上下两部分,上面2重for循环,下面2重for循环,相信有很多的小伙伴都是这样做的吧,但是这样也造成了很多的代码冗余,今天无意间看到另外一种简便的方法,具体思路和实现过程如下图所示:
思路:
1.先画一个正方形,边长为奇数.
2.定义每一行的初始位置和结束位置,初始值为:边长/2+1.
3. 在每一行的输出位置和结束位置打印*,即为最中间的一条竖线.
4.改变初始位置和结束位置,上半部分菱形,初始位置--,结束位置++;下半部分相反.
5.在每一行的初始位置和结束位置之间打印*,即为实心菱形.
6.只在每一行的初始位置和结束位置处打印*,即为空心菱形.
第一步,输出正方形
1 public class printexample { 2 public static void main(string[] args) { 3 int size = 5; 4 for (int i = 1; i <= size; i++) { 5 for (int j = 1; j <= size; j++) { 6 system.out.print("*"); 7 } 8 system.out.println(); 9 } 10 } 11 }
结果:
第二步,输出一条竖线
1 public class printexample { 2 public static void main(string[] args) { 3 int size = 5; 4 int startpos = size/2 + 1; 5 int endpos = size/2 + 1; 6 for (int i = 1; i <= size; i++) { 7 for (int j = 1; j <= size; j++) { 8 if (j>=startpos && j<=endpos) { 9 system.out.print("*"); 10 }else { 11 system.out.print(" "); 12 } 13 } 14 system.out.println(); 15 } 16 } 17 }
效果:
第三步,输出实心菱形
1 public class printexample { 2 public static void main(string[] args) { 3 int size = 5; 4 int startpos = size/2 + 1; 5 int endpos = size/2 + 1; 6 boolean flag = true; 7 for (int i = 1; i <= size; i++) { 8 for (int j = 1; j <= size; j++) { 9 if (j>=startpos && j<=endpos) { 10 system.out.print("*"); 11 }else { 12 system.out.print(" "); 13 } 14 } 15 if ((endpos - startpos + 1) == size) { 16 flag = false; 17 } 18 if (flag) { 19 startpos--; 20 endpos++; 21 }else { 22 startpos++; 23 endpos--; 24 } 25 system.out.println(); 26 } 27 } 28 }
效果:
第四步,输出空心菱形
1 public class printexample { 2 public static void main(string[] args) { 3 int size = 5; 4 int startpos = size/2 + 1; 5 int endpos = size/2 + 1; 6 boolean flag = true; 7 for (int i = 1; i <= size; i++) { 8 for (int j = 1; j <= size; j++) { 9 if (j==startpos || j==endpos) { 10 system.out.print("*"); 11 }else { 12 system.out.print(" "); 13 } 14 } 15 if ((endpos - startpos + 1) == size) { 16 flag = false; 17 } 18 if (flag) { 19 startpos--; 20 endpos++; 21 }else { 22 startpos++; 23 endpos--; 24 } 25 system.out.println(); 26 } 27 } 28 }
效果:
总结:
编程要懂得转换思路,多思考,通常一个问题会有多种解决方法,我们要多思考,多尝试,找出最方便的方法.
上一篇: 和媳妇一起洗澡
下一篇: 中秋晚饭约在二姨家聚餐
推荐阅读
-
python使用循环打印所有三位数水仙花数的实例
-
在jsp页面如何获取Map里面某一个指定集合的值并循环打印
-
python 打印直角三角形,等边三角形,菱形,正方形的代码
-
用php的for循环输出四边形,各种三角形和菱形【含空心版本】
-
python 练习题:请利用循环依次对list中的每个名字打印出Hello, xxx!
-
Java基础_循环嵌套_打印乘法口诀、菱形,各种图形,计算二元一次和三元一次方程组_7
-
JS打印彩色菱形的实例代码
-
php打印一个边长为N的实心和空心菱型的方法
-
c++打印实心菱形,空心三角形,十字星,空心正方形,实心平行四边形
-
用python的while循环,打印九九乘法表