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

 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 }

 

转载于:https://www.cnblogs.com/MoRua/p/8515060.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值