Java例题_19 打印菱形图案

 1 /*19 【程序 19 打印菱形图案】 
 2 题目:打印出如下图案(菱形) 
 3      * 
 4     *** 
 5    ***** 
 6   ******* 
 7    ***** 
 8     *** 
 9      * 
10 */
11 
12 /*分析
13  * 首先想到for循环,但是for只能完成递增或者递减,于是将图形分成两部分,一个正三角,一个倒三角
14  * 三角形的输出就像九九乘法表,用到两层循环,一层控制输出多少行,另一层控制输出*的个数
15  * 但是怎么居中呢。。。
16  * =========居中=======
17  * 据观察:找到三角中轴位置X,然后      上三角时(x-i)<j<(x+i)时输出*,其他输出" "
18  *                         下三角时(i-x)<j<n-(i-x)+1   时输出*,其他输出" "
19  *  //i是这一行的行数
20  * x=n/2+1
21  * */
22 
23 package homework;
24 
25 public class _19 {
26 
27     public static void main(String[] args) {
28         // 声明n=7,也就是共输出7行
29         int n = 7;
30         int x=n/2+1;  //x是中轴
31         //两层for循环输出*
32         for (int i = 1; i <=n; i++) {   //一共7行
33             //上三角
34             if (i<=x) {          //行数在中轴之上(包括中轴)
35                 //第二层for循环输出上三角*
36                 for (int j = 1; j <=n; j++) {
37                     if ((j>x-i)&(j<x+i)) {      //在中轴偏移量范围内输出*
38                         System.out.print("*");
39                     }
40                     else {
41                         System.out.print(" ");  //中轴偏移外输出“ ”
42                     }
43                 }
44             }
45             //下三角
46             else {
47                 //第二层for循环,输出下三角的*(i=>5~7)
48                 for (int j = 1; j <=n; j++) {
49                     if ((j>i-x)&(j<n-(i-x)+1)) {
50                         System.out.print("*");
51                     }
52                     else {
53                         System.out.print(" ");  //中轴偏移外输出“ ”
54                     }
55                 }
56             }
57             System.out.println();     //换行
58          }
59     }
60 
61 }

 

posted @ 2020-02-18 22:30  浪漫主义程序员  阅读(291)  评论(0编辑  收藏  举报