1 package Training;
2
3 /**
4 * 打印菱形
5 *
6 * @author Administrator
7 * @version 1.0
8 */
9 public class Diamond14 {
10
11 public static void main(String[] args) {
12 int line = 8;// 行数
13 int rank = 8;// 列数
14 getDiamondPicture(7, 7);// 行列数相等 且 同为奇数 的菱形
15 getDiamondPicture2(line, rank);// 行列数同为偶数 的菱形
16 }
17
18 /**
19 * 这个函数绘制 行列数相等 且 同为奇数 的菱形;
20 *
21 * @param line
22 * 总行数
23 * @param rank
24 * 总列数
25 *
26 */
27 private static void getDiamondPicture(int line, int rank) {
28 int r = (rank / 2) + 1;
29 int mid = r;
30 for (int i = 1; i <= line; i++) {
31 // 打印上半部分
32 if (i <= mid) {
33 for (int j = 1; j <= r; j++) {
34 if (j <= mid - i) {
35 System.out.print(' ');
36 } else {
37 System.out.print('*');
38 }
39 }
40 if (r < line) {
41 r++;
42 }
43 System.out.println();
44 }
45 // 打印下半部分
46 else {
47 r--;
48 for (int j = 0; j < r; j++) {
49 if (j + mid < i) {
50 System.out.print(' ');
51 } else {
52 System.out.print('*');
53 }
54 }
55 System.out.println();
56 }
57 }
58 }
59
60 /**
61 * 这个函数绘制 行列数同为偶数 的菱形
62 *
63 * @param line
64 * @param rank
65 */
66 private static void getDiamondPicture2(int line, int rank) {
67 for (int i = 0; i <= line; i++) {
68 for (int j = 0; j <= rank; j++) {
69 if (isInRhombus(i, j, line, rank)) {
70 System.out.print("*");
71 } else {
72 System.out.print(" ");
73 }
74 }
75 System.out.println();
76 }
77 }
78
79 /**
80 * 判断
81 *
82 * @param x
83 * @param y
84 * @param m
85 * @param n
86 * @return
87 */
88 private static boolean isInRhombus(int x, int y, int m, int n) {
89 int s = m * n;
90 if (2 * n * x + 2 * m * y >= s && 2 * n * x - 2 * m * y <= s && -2 * n * x + 2 * m * y <= s
91 && 2 * n * x + 2 * m * y <= 3 * s) {
92 return true;
93 }
94
95 return false;
96 }
97 }
![]()