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 }