• for循环输出漏斗的形状【java】


    使用for循环语句输出以下“漏斗”效果:

    +------+
    |..../|
    | ../ |
    |  /  |
    |  /  |
    | /.. |
    |/....|
    +------+

     代码:(解决思路详见代码头部多行注释)

      本例代码中使用了常量 HEIGHT,是指漏斗内部高度值的一半作为常量值。

    /*
     * +------+     HEIGHT:3
     * |..../|     第一行:空格数:0  点数:4  空格数:0
     * | ../ |     第二行:空格数:1  点数:2  空格数:1
     * |  /  |     第三行:空格数:2  点数:0  空格数:2
     * |  /  |
     * | /.. |
     * |/....|
     * +------+
     * 
     * +--------+    HEIGHT:4
     * |....../|    第一行:空格数:0  点数:6  空格数:0
     * | ..../ |    第二行:空格数:1  点数:4  空格数:1
     * |  ../  |    第三行:空格数:2  点数:2  空格数:2
     * |   /   |    第四行:空格数:3  点数:0  空格数:3
     * |   /   |
     * |  /..  |
     * | /.... |
     * |/......|
     * +--------+
     * 
     * 分析:
     * 1、将图形分成三个部分:
     *         - 最上层和最下层的图形;
     *         - 漏斗上部分
     *         - 漏斗下部分
     * 2、取漏斗的上部分为一个定值HEIGHT
     *         - 最上层和最下层的图形:
     *             "-"数量为:2*HEIGHT
     *         - 漏斗上部分
     *            第n行:空格数:line-1        点数:2*(HEIGHT-line)        空格数:line-1
     *        - 漏斗下部分
     *            第n行:空格数:HEIGHT-line    点数:2*(line-1)            空格数:HEIGHT-line 
     *             
     * 
     */
    
    public class Test {
        public static final int HEIGHT = 3;
        
        public static void main(String[] args) {
            drawLine();
            drawTop();
            drawBottom();
            drawLine();
        }
        
        public static void drawTop() {
            
            for(int line=1;line<=HEIGHT;line++) {
                System.out.print("|");
                
                    //输出右边的空格“ ”
                    for(int i=1;i<=(line-1);i++) {
                        System.out.print(" ");
                    }
                    
                    System.out.print("\");
                    
                    //输出点“.”
                    for(int i=1;i<=2*(HEIGHT-line);i++) {
                        System.out.print(".");
                    }
                    
                    System.out.print("/");
                    
                    //输出右边的空格“ ”
                    for(int i=1;i<=line-1;i++) {
                        System.out.print(" ");
                    }
    
                    System.out.println("|");
            }
            
        } 
        
    public static void drawBottom() {
            
            for(int line=HEIGHT;line>0;line--) {
                System.out.print("|");
                
                    //输出右边的空格“ ”
                    for(int i=1;i<=(line-1);i++) {
                        System.out.print(" ");
                    }
                    
                    System.out.print("/");
                    
                    //输出点“.”
                    for(int i=1;i<=2*(HEIGHT-line);i++) {
                        System.out.print(".");
                    }
                    
                    System.out.print("\");
                    
                    //输出右边的空格“ ”
                    for(int i=1;i<=line-1;i++) {
                        System.out.print(" ");
                    }
    
                    System.out.println("|");
            }
            
        } 
        
        public static void drawLine() {
            System.out.print("+");
            for(int i=1;i<=2*HEIGHT;i++) {
                System.out.print("-");
            }
            System.out.println("+");
        }
    }

       代码结果显示:

  • 相关阅读:
    JAVA for(i = 0; i<a.length; i++) 解析
    3.2.2多维数组 3.3 排序
    3.2数组
    字符串和数组
    2.7.3与程序转移有关的跳转语句
    2.7.2 循环语句
    读书共享 Primer Plus C-part 4
    Linux 批量修改文件名
    关于/usr/local/lib/libz.a(zutil.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC解决办法
    做一个有深度的程序猿
  • 原文地址:https://www.cnblogs.com/mujingyu/p/7392537.html
Copyright © 2020-2023  润新知