for循环输出空心的菱形

一.实例说明:

本实例在输出菱形的基础上加大了难度,输出空心的菱形图案。在等级考试与公司面试时也出现过类似题目,实际目的在于掌握for循环的嵌套使用。

二.设计过程:

像这种复杂问题我们也可以先从简单处着手,如果要打印空心菱形,可以沿着“金字塔——>空心金字塔——>空心菱形”这一思路进行。实现如下:

(一)金字塔

1.需求:在控制台打印一个由5行“*”组成的金字塔

2.分析:

首先行数5行是确定的,列数是不确定的。

第一行:       i = 0;       i < 5;       j = 0;       j < 4;       4个空白

                                                 k = 0;      k < 1;      1个星号

第二行:       i = 1;       i < 5;       j = 0;       j < 3;       3个空白

                                                 k = 0;      k < 3;      3个星号

第三行:       i = 2;       i < 5;       j = 0;       j < 2;       2个空白

                                                 k = 0;      k < 5;       5个星号

                                        ……

由以上分析可知,每行空白的个数为 j < (5-1-i),每行星号的个数为 k < 2*i+1。

3.实例:

class Demo1{public static void main(String[] args){for(int i = 0;i < 5;i++){	//i控制金字塔行数for(int j = 0;j < (5-1-i);j++){//j控制每行"*"前面的空格数System.out.print(" ");}for(int k = 0;k < (2*i+1);k++){	//k控制要打印的"*"的个数System.out.print("*");}System.out.println();}}
}

4.运行结果如下图所示:


(二)镂空金字塔

1.需求:在控制台上打印镂空金字塔。

2.分析:

镂空金字塔与完整金字塔比较,可以看出除了金字塔的各个边上是"*"号外,金字塔的内部全是用空格代替了“*”号。因此可以在打印每行的"*"号时判断是不是第一个“*”或者最后一个"*",如果不是则用空格替换掉。

3.实例:

class Demo2{public static void main(String[] args){for(int i = 0;i < 5;i++){	//i控制金字塔行数for(int j = 0;j < (5-1-i);j++){//j控制每行"*"前面的空格数System.out.print(" ");}for(int k = 0;k < (2*i+1);k++){	//k控制要打印的"*"的个数if(i == 0||i==4){//如果是第一行或最后一行则将"*"全部打印System.out.print("*");}else if(k == 0||k == (2*i)){//如果要打印的"*"是第一个或最后一个则打印出来System.out.print("*");}else{//如果要打印的"*"不是第一个或最后一个则打印空格System.out.print(" ");}}System.out.println();}}
}

4.运行结果如下图所示:


(三)空心菱形

1.需求:在控制台上打印出空心菱形。

2.分析:

空心菱形可以看作两部分组成:上半部分和下半部分。而这两部分均属于空心金字塔类型。

3.实例:

class Demo3{public static void main(String[] args){for(int i = 0;i < 5;i++){	//i表示空心菱形上半部分行数;类似于金字塔行数for(int j = 0;j < (5-1-i);j++){//j控制每行"*"前面的空格数System.out.print(" ");}for(int k = 0;k < (2*i+1);k++){	//k控制要打印的"*"的个数if(i == 0){//如果是第一行则将"*"全部打印System.out.print("*");}else if(k == 0||k == (2*i)){//如果要打印的"*"是第一个或最后一个则    								//打印出来System.out.print("*");}else{//如果要打印的"*"不是第一个或最后一个则打印空格System.out.print(" ");}}System.out.println();}//以上打印的是空心菱形的上半部分。for(int i = 0;i < 4;i++){	//空心菱形的下半部分的行数比上半部分少一行;比如上	    					//半部分是5行,下半部分为4行才能构成菱形for(int j = 0;j < (i+1);j++){//j控制每行"*"前面的空格数System.out.print(" ");}for(int k = 0;k < 2*(4-i)-1;k++){	//k控制要打印的"*"的个数if(i == 3){//如果是最后一行则将"*"全部打印System.out.print("*");}else if(k == 0||k == 2*(3-i)){//如果要打印的"*"是第一个或最后一个	      							//则打印出来System.out.print("*");}else{//如果要打印的"*"不是第一个或最后一个则打印空格System.out.print(" ");}}System.out.println();}}
}

4.运行结果如下图所示:







本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部