关于双重循环的简单应用——打印菱形(没事写的玩的,纯属娱乐)

public class LingXing {

        public static void print(int n){
                int i = 0;
                int j = 0;
                for(i=0; i<n; i++){//前四行
                        for(j=0; j<n+i;j++){
                                if(j < n-i-1)
                                        System.out.print(" ");
                                else
                                        System.out.print("*");
                        }
                        System.out.println();
                }
                
                for(i=1; i<n; i++){//后三行
                        for(j=0; j<(2*n-i-1); j++){
                                if(j < i)
                                        System.out.print(" ");
                                else
                                        System.out.print("*");
                        }
                        System.out.println();
                }
        }
        
        public static void main(String[] args) {
                print(4);
        }
}

结果显示:

   *
  ***
 *****
*******
 *****
  ***
   *

然后有网友问能不能把中间的星号去掉。好吧,有需求就要尽力满足咯。于是我加了两行:

public class LingXing {

        public static void print(int n){
                int i = 0;
                int j = 0;
                for(i=0; i<n; i++)
                {//前四行
                        for(j=0; j<n+i;j++)
                        {
                                if(j < n-i-1)
                                        System.out.print(" ");
                                else if(j==n-i-1||(j==n+i-1))
                                        System.out.print("*");//红色代表新加上去的,下同……
                                else
                                        System.out.print(" ");
                        }
                        System.out.println();
                }
                
                for(i=1; i<n; i++)
                {//后三行
                        for(j=0; j<(2*n-i-1); j++)
                        {
                                if(j < i)
                                        System.out.print(" ");
                                else if(j==i||(j==2*n-i-2))
                                        System.out.print("*");
                                        
                                else
                                        System.out.print(" ");
                        }
                        System.out.println();
                }
        }
        
        public static void main(String[] args) {
                print(4);
        }
}

 

结果显示为:

   *
  * *
 *   *
*     *
 *   *
  * *
   *

 

然后我就在想:能不能在中间再加一圈菱形。于是:

public class LingXing {

    public static void print(int n){
        int i = 0;
        int j = 0;
        for(i=0; i<n; i++)
        {//前四行
            for(j=0; j<n+i;j++)
            {
                if(j < n-i-1)
                    System.out.print(" ");
                else if(j==n-i-1||(j==n+i-1)||(j==n-i+1)||(j==n+i-3))
                    System.out.print("*");
                else
                    System.out.print(" ");
            }
            System.out.println();
        }
        
        for(i=1; i<n; i++)
        {//后三行
            for(j=0; j<(2*n-i-1); j++)
            {
                if(j < i)
                    System.out.print(" ");
                else if(j==i||(j==2*n-i-2)||(j==i+2)||(j==2*n-i-4))
                    System.out.print("*");
                    
                else
                    System.out.print(" ");
            }
            System.out.println();
        }
    }
    
    public static void main(String[] args) {
        print(7);
    }
}

显示结果为:

      *
     * *
    * * *
   * * * *
  * *   * *
 * *     * *
* *       * *
 * *     * *
  * *   * *
   * * * *
    * * *
     * *
      *

在这里我就抛砖引玉了啊,望各位大神提供更好玩的玩法……

posted @ 2015-04-03 10:55  leejun同学  阅读(735)  评论(0编辑  收藏  举报