java在控制台输出空心正方形,菱形,空心菱形

 使用for和if打印一个空心正方形
/*思路:要想打印一个5x5的空心正方形,首先它的第一横行和最后一行都是填满的,需要全部遍历出来,第二三四行和只有左右两条边是出来的,中间部分为空的。因此在打印第二三四列的时候,需要再进行一下判断,来确定打印空格。*/

    for (int x = 0;x<5 ;x++ )  //先确定是5行5列的正方形
        {
            if (x>0 && x<4)  //打印出中间空的情况
            {
                for (int z=0;z<5 ;z++ )  //打印竖的列
                {
                    if (z==0 | z==4) //第一和最后一列
                    {
                        System.out.print("* ");  //输出“* ”
                    }else if(z>=1 && z<=4){  //中间三列
                        System.out.print("  ");//输出“  ”
                    }
                    
                }

            }
            else if(x==0 | x==4){  //第一行和最后一行
                for (int y=0;y<5 ;y++ )
                {
                    System.out.print("* ");//全部都输出“*”
                }
            }
            System.out.println("");//println做一个换行(print输出的内容是不换行的)
        }

使用for循环打印一个菱形
/*
思路分析: 输出一个菱形,可以拆分成两部分进行思考,分成上下两个三角形来进行输出,那好了,如何输出一个三角那,首先,三角形的是一个等腰三角形,而不是直角三角形,所以横排除了遍历“*”之外,还需要在其前边添加若干空格把它挤过去 ,显得比较好看,所以还得遍历他前边的空格。
*/

 1     for (int x = 0;x<10 ;x++ )//假设一共有10竖排
 2         {
 3             if (x<=5)//上半个三角形的情况
 4             {
 5                 for (int z =5-x;z>0 ;z-- )//前边的空格是一个越来越少的三角形形态,所以定义为5-x
 6                 {
 7                     System.out.print(" ");
 8                 }
 9                 for (int y=0;y<x ;y++ )// 第一行一个“*”,第二行2个“*”,可以得出列数是和行数相等的,故定义y<x;
10                 {
11                     System.out.print("* ");//此时输出“* ”;
12                 }
13             }else//这是下半个三角形的情况
14             {
15                 for (int z =0;z<x-5 ;z++ )  //此时前边空格形态是上少下多,正好为x-5;
16                 {
17                     System.out.print(" ");
18                 }
19                 for (int y=10-x;y>0 ;y-- )//上宽下窄,所以遍历“*”为10-x;
20                 {
21                     System.out.print("* ");
22                 }                
23             }
24             System.out.println("");
25         }


使用for循环打印一个空心菱形
/* 思路分析:输出一个空心菱形,需要拆分成三部分进行思考,分成上下两个三角形来进行输出,那好了,如何输出一个三角那,首先,三角形的是一个等腰三角形,而不是直角三角形,所以横排除了遍历中间的菱形部分之外,还需要在其前边添加若干空格把它挤过去 ,显得比较好看,所以还得遍历他前边的空格。中间的空格也需要进行单独遍历,而“*”做的框,只需要把确定的值确定出来,让它输出“*”,即可!
*/

    for (int x = 0;x<10 ;x++ )//假设一共有10竖排
        {
            if (x<=5)//上半个三角形的情况
            {
                for (int z =5-x;z>0 ;z-- )//前边的空格是一个越来越少的三角形形态,所以定义为5-x
                {
                    System.out.print(" ");
                }
                for (int y=0;y<x ;y++ )//这里了开始就进入正题了,
                {
                    if (y==0 | y==x-1) //这是两边的框, 此时输出“* ”
                    {
                        System.out.print("* ");
                    }else{//中间剩下的部分输出空格
                        System.out.print("  ");
                    }
                }
            }else{                
                for (int z =0;z<x-5 ;z++ ) //此时前边空格形态是上少下多,正好为x-5;
                {
                    System.out.print(" ");// 不多说,先把空格怼进去
                }
                for (int y=10-x;y>0 ;y-- )// 10-x为有几列
                {
                    if (y==1 | y==10-x ) //第一列和10-x(最后一列)输出“*”做一个框出来
                    {
                        System.out.print("* ");
                    }else{  //中间部分输出空格
                        System.out.print("  ");
                    }
                }            
            }
            System.out.println("");
        }

原文地址:https://www.cnblogs.com/donghb/p/7183977.html