java基础---循环打印图形

java基础打印图形

在控制台输出实心菱形和空心菱形,输出的结果:

        /*
         *    *
         *   ***
         *  *****
         * *******
         *  *****
         *   *** 
         *    *
         */
        /*
         *    *
         *   * *
         *  *   *
         * *     *
         *  *   *
         *   * * 
         *    *
         */

实心菱形代码部分:

for(int i=1;i<=4;i++) {//先控制打出倒三角
            for(int j= 1;j<=4-i;j++) {//内层控制每层的个数
                System.out.print(" ");
                /*
                 * 111
                 * 11
                 * 1
                 */
            }
            for(int k= 1;k<=2*i-1;k++) {
                    /*
                     * 此处正常输出的图形为:
                     *  *
                     *  ***
                     *  *****
                     *  *******
                     * 
                     */
                System.out.print("*");//此处正常打印*  1---3----5----7
            }
            System.out.println();
                /*
                 * 与之前的输出图形进行拼接,空格用1表示
                 * 111*
                 * 11***
                 * 1*****
                 * *******
                 * 则完成上半部分的菱形
                 */
        }
        //下半部分,原理和上半部分原理相同。
        for(int l=1;l<=2;l++) {
            for(int o =1;o<=l;o++) {
                System.out.print(" ");
            }
            for(int p=1;p<=2*(2-l+1)-1;p++) {
                System.out.print("*");
            }
            System.out.println();
        }

空心菱形则是在实心菱形的基础之上完成的
将输出号的同时做一次判断,看其是否满足每行的最后一个值,若满足输出,不满足输出空格:
代码部分:

for(int i=1;i<=4;i++) {//先控制打出倒三角
            for(int j= 1;j<=4-i;j++) {//内层控制每层的个数
                System.out.print(" ");
                /*
                 * 111
                 * 11
                 * 1
                 */
            }
            for(int k= 1;k<=2*i-1;k++) {
                if(k==1 || k==2*i-1) {//在此处做了判断,满足输出直角
                //三角形的两个边,也就是第一列是星号,还有最后一个是星号
                    System.out.print("*");//此处正常打印*  1---3----5
                }else {
                    System.out.print(" ");
                }

            }
            System.out.println();
        }//上半部分
        for(int l=1;l<=3;l++) {
            for(int o =1;o<=l;o++) {
                System.out.print(" ");
            }
            for(int p=1;p<=2*(3-l+1)-1;p++) {
                if(p==1 || p==2*(3-l+1)-1) {
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }

            }
            System.out.println();
        }

最后用数组写了一个图像通用公式:
各位在使用的时候,将数组的数字改为自己定义的图案即可使用:

class Test {
    public static void main(String[] args) {
        System.out.println(printHeart("*"));
    }
//这段代码输出的是 i love java,被心形包围。
    private static String printHeart(String input) {

        int[] array = { 0, 1, 0, 0, 0, 1, 0,
                        1, 0, 1, 0, 1, 0, 1,
                        1, 0, 0, 1, 0, 0, 1, 
                        1, 4, 5, 2, 3, 4, 1, 
                        0, 1, 0, 0, 0, 1, 0, 
                        0, 0, 1, 0, 1, 0, 0, 
                        0, 0, 0, 1, 0, 0, 0 };

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < array.length; i++) {
            if (i % 7 == 0)
                sb.append("\n");
            if (array[i] == 0)
                sb.append("   ");
            else if (array[i] == 4)
                sb.append(" ");
            else if (array[i] == 5)
                sb.append(" I ");
            else if (array[i] == 2)
                sb.append("Lvoe ");
            else if (array[i] == 3)
                sb.append("Java");
            else
                sb.append("  " + input);
        }
        return sb.toString();
    }

}

以后再打印图案是直接套用对的方法即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值