JAVA题目:打印出如下图案(菱形)

2018/03/06 16:24
阅读数 23
 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 }

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部