A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

楼主厉害了  明天试试
回复 使用道具 举报
回复 使用道具 举报
66666666666666666666666666
回复 使用道具 举报
学霸带带我
回复 使用道具 举报
就服你,你当时怎么想的,太厉害了
回复 使用道具 举报
666,很6,有时间也试试
回复 使用道具 举报
可以的,老哥稳
回复 使用道具 举报
值得一试啊
回复 使用道具 举报
这个很牛
回复 使用道具 举报
本帖最后由 黑马59期学员 于 2017-3-30 14:22 编辑

int HighLevel(int wide) {
                int i = 0, j = 0, k = 0, t = 0, m = 0, n = 0, count = 1;// i控制循环内高度,j控制每行前面空格,k控制输出的*数
                // t控制高层星号中间空格,m记录高层最底行的星数,以下逐行增4
                // n记录顶行空个数,以下逐行减4;count记录高层高度,与high无关
                m = (wide - 4) / 2;
                do {
                        count++;
                        m -= 4;
                } while (m > 4);
                if ((wide - 4) % 2 == 0)// 区别对待奇偶宽度,奇数中间最小空1个,偶数最小空两个
                {
                        n = 2 + 4 * (count - 1);
                        m--;
                } else
                        n = 1 + 4 * (count - 1);
                for (i = 0; i < count; i++) {
                        for (j = (count - i) * 2; j > 0; j--)
                                System.out.print(" ");
                        for (k = 0; k < m; k++)
                                System.out.print("*");
                        for (t = 0; t < n; t++)
                                System.out.print(" ");
                        for (k = 0; k < m; k++)
                                System.out.print("*");
                        m += 4;
                        n -= 4;
                        System.out.print("\n");
                }
                return 0;
        }

        int LowLevel(int wide) {
                int i = 0, j = 0, k = 0;// i控制输出行,j控制输出每行前的空格,k控制输出*
                int high = 0, tmp = wide;
                do// 计算所需高度
                {
                        high++;
                        tmp -= 4;
                } while (tmp > 4);
                high += 1;
                for (i = 0; i < high; i++) {
                        for (j = 0; j < 2 * i; j++)
                                System.out.print(" ");
                        for (k = wide - 4 * i; k > 0; k--)
                                System.out.print("*");
                        System.out.print("\n");
                }
                return 0;
        }

        public static void main(String[] args) {
                int wide = 50;
                Test4 heart = new Test4();
                heart.HighLevel(wide);
                heart.LowLevel(wide);
        }
注:wide的值可以进行修改,从而变换出各种大小的心型图案,据多次修改验证,改方法目前有效的解决该问题,费了老大劲,看在我辛苦完成这道题的份上,多给些技术分,谢谢!



回复 使用道具 举报
看这个问题,好难啊
回复 使用道具 举报
厉害...........
回复 使用道具 举报
这几天刚好学到for循环了,感觉到这里才有意思了,能够做一些看得见的小程序了.
回复 使用道具 举报
6666      晚上敲敲试试
回复 使用道具 举报
打星星*  可简单了   一个for循环 不停的打印星星   加个IF  语句条件换行  就ok了   
回复 使用道具 举报
顶起,666666666666666666666
回复 使用道具 举报
两个for循环,一个if就搞定。
回复 使用道具 举报
千千阙歌 来自手机 中级黑马 2017-4-3 23:22:44
58#
看看看看了
回复 使用道具 举报
顶起,666666666666
回复 使用道具 举报
很好啊,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马