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 }