黑马程序员技术交流社区

标题: for循环打印菱形。 [打印本页]

作者: cyc523633157    时间: 2014-8-8 14:06
标题: for循环打印菱形。
******************************
*                   *                     *
*                * * *                   *
*              * * * * *                *
*            * * * * * * *             *
*          * * * * * * * * *          *
*        * * * * * * * * * * *       *
*      * * * * * * * * * * * * *    *
*        * * * * * * * * * * *       *
*           * * * * * * * * *         *
*            * * * * * * *             *
*              * * * * *                *
*                 * * *                  *
*                    *                    *
******************************


这个用循环怎么打印出来。

作者: 黄霄仪    时间: 2014-8-8 16:00
本帖最后由 黄霄仪 于 2014-8-8 16:36 编辑

//可变长度的菱形,这应该就是你想要的结果
public class Test {
        public static void main(String[] args) {
                Test.lingxing(15);
        }

        public static void lingxing(int n) {
                if (n % 2 == 0) {
                        System.out.println("不能为偶数");
                } else {
                        int u = n / 2 + 1;// 上半部分的行数
                        //打印上面一排字符*
                        for(int i=1;i<=n+4;i++){
                                System.out.print("*");
                        }
                        System.out.println();
                        for (int i = 1; i <= u; i++) {
                                
                                System.out.print("* ");
                                // 打印空格
                                for (int m = 1; m <= u - i; m++) {
                                        System.out.print(" ");
                                }
                                // 打印*
                                for (int j = 1; j <= 2 * i - 1; j++) {
                                                System.out.print("*");
                                }
                                //打印后面的空格
                                for (int m = 1; m <= u - i; m++) {
                                        System.out.print(" ");
                                }
                                System.out.println(" *");
                        }

                        u = n - u;// 下半部分的行数
                        for (int i = 1; i <= u; i++) {
                                System.out.print("* ");
                                // 打印空格
                                for (int m = 1; m <= i; m++) {
                                        System.out.print(" ");
                                }
                                // 打印*
                                for (int j = 1; j <= 2 * u + 1 - 2 * i; j++) {
                                                System.out.print("*");
                                       
                                }
                                //打印后面的空格
                                for (int m = 1; m <= i; m++) {
                                        System.out.print(" ");
                                }
                                System.out.println(" *");
                        }
                        //打印下面一排字符*
                        for(int i=1;i<=n+4;i++){
                                System.out.print("*");
                        }
                }
        }
}

作者: 唐覃利    时间: 2014-8-8 16:04
学习了 。。。
作者: WJN_YES    时间: 2014-8-8 16:04
我自己做了一下,不知道是不是你想要的,你可以试一下,可能代码的效率不高,不过可以运行出来吧
class lingxing
{
        public static void main(String[] args)
        {
                dayin();
                dayin1();
                dayin();

        }

        public static void dayin(){
                for(int i=0;i<30;i++){
                        System.out.print("*");
                }
                System.out.println();
        }

        public static void dayin1(){
                for(int i=1;i<=7;i++){
                        System.out.print("*");
                       
                        for(int j=1;j<15-i;j++){
                                System.out.print(" ");
                        }
                        for(int j=1;j<=2*i-1;j++){
                                System.out.print("*");
                               
                        }
                        for(int k=15-i;k>0;k--){
                        System.out.print(" ");
                       
                        }
                        System.out.print("*");
                        System.out.println();
                }
       
                for(int i=5;i>=0;i--){
                        System.out.print("*");
                        for(int j=0;j<13-i;j++){
                                System.out.print(" ");
                        }

                        for(int j=0;j<2*i+1;j++){
                                System.out.print("*");
                        }
                        for(int k=14-i;k>0;k--){
                                System.out.print(" ");
                       
                        }
                        System.out.print("*");
                        System.out.println();
                }
        }
}


作者: Huberry    时间: 2014-8-8 16:29
学习一下
作者: 好男人进化论    时间: 2014-8-8 17:23
学习一下,自己敲看看
作者: 何磊    时间: 2014-8-8 20:03
WJN_YES 发表于 2014-8-8 16:04
我自己做了一下,不知道是不是你想要的,你可以试一下,可能代码的效率不高,不过可以运行出来吧
class lin ...

能介绍下思路就更好了
作者: WJN_YES    时间: 2014-8-8 20:12
我的思路是首先定义一个方法打印第一行和最后一行的*这个就用for循环,应该没问题吧。
接下来主要的就是打印菱形,我是将菱形分为两个部分上面的7行这里叫做正三角,和下面的6行这里叫做倒三角。
首先说一下正三角,第一层循环是控制行,一共7行,里面的两个循环都是用来控制列的,一个控制空格,一个控制
“*”其实主要就是看列和行的关系,比如第一行有1个*,第二行有3个,以此下去找到了控制*的条件2*i-1,空格的控制就是第一行*号的左边有14个空格,第二行13个空格,所以控制空格的条件就是15-i,综上就是控制空格的条件和循环的结构找对了就没问题了,你可以在看看,可以少弄几行和几列,找找规律理解一下。
作者: sunny~    时间: 2014-8-8 20:58
这种题目怎么做,唉愁这种题了,没有逻辑思维
作者: 碎流    时间: 2014-8-8 21:31
我晕,学习了,,,,
作者: 继续悲伤    时间: 2014-8-8 21:50
来学习了!!!
作者: Imp_x    时间: 2014-8-8 21:59
这图形还好点  楼猪可以试下打印一个空心的菱形~ ~  那个才叫痛苦
作者: 柠萌不    时间: 2014-8-8 22:07
和空心菱形比这个还好了...
作者: 刘小记.    时间: 2014-8-8 22:10
学习学习
作者: 大★宝    时间: 2014-8-9 11:20
知识回顾,自己又敲了一遍
作者: 韶山    时间: 2014-8-9 11:59
学习了,自己练习下
作者: 心之信子    时间: 2014-8-9 21:41
学习一下,自己敲看看
作者: Justfeeling    时间: 2014-8-9 21:45
方法确实很多
作者: 喂、借个微笑    时间: 2014-8-11 11:07
学习了!
作者: 大成哥    时间: 2014-8-11 11:14
学习了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2