天天看点

双重循环的一些想法一、双重循环

文章目录

  • 一、双重循环
    • 双重循环-----关于图形题的一些汇总
    • 总结:

一、双重循环

双重循环-----关于图形题的一些汇总

先贴出代码,最后总结

public class picture {
    public static void main(String[] args){

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

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

                        ####*
                        ###***
                        ##*****
                        #*******
                        *********

        for (int i = 0; i <5 ; i++) {
            for (int j = 0; j <= i ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        System.out.println();
        for (int i = 0; i <5; i++) {
            for (int j = 0; j+i <5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }


        for (int i = 0; i < 5; i++) {
            for (int j = 0; j+i < 4; j++) {
                System.out.print("#");
            }
            for (int j = 0; j <= 2*i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
*/
/*
                *********
                #*******
                ##*****
                ###***
                ####*
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i; j++) {
                System.out.print("#");
            }
            for (int j = 0; j+ 2*i < 9 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
*/
/*

                        ####*
                        ###***
                        ##*****
                        #*******
                        *********
                        #*******
                        ##*****
                        ###***
                        ####*
        for (int i = -4; i <= 4 ; i++) {
            for (int j = 0; j < Math.abs(i); j++) {
                System.out.print("#");
            }
            for (int j = 0; j +2*Math.abs(i)< 9; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
*/
/*
                        *********
                        #*******
                        ##*****
                        ###***
                        ####*
                        ###***
                        ##*****
                        #*******

        for (int i = -4; i <= 4 ; i++) {
            for (int j = 0; j+Math.abs(i)< 4 ; j++) {
                System.out.print("#");
            }
            for (int j = 0; j-2*Math.abs(i)<=0 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

*/
/*
                    ####*
                    ###*$*
                    ##*$$$*
                    #*$$$$$*
                    *$$$$$$$*


        for (int i = 0; i < 5; i++) {
            for (int j = 0; j+i < 4; j++) {
                System.out.print("#");
            }
            for (int j = 0; j <= 2*i; j++) {
                if((j==0||j==2*i)||i == 4 ) {
                    System.out.print("*");
                }
                else{
                    System.out.print("$");
                }
            }
            System.out.println();
        }
*/

/*
                        *********
                        #*$$$$$*
                        ##*$$$*
                        ###*$*
                        ####*
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i; j++) {
                System.out.print("#");
            }
            for (int j = 0; j+ 2*i < 9 ; j++) {
                if((j == 0 || j == 8-2*i) || i == 0){
                    System.out.print("*");
                }
                else{
                    System.out.print("$");
                }
            }
            System.out.println();
        }
*/
/*
                        ####*
                        ###*$*
                        ##*$$$*
                        #*$$$$$*
                        *$$$$$$$*
                        #*$$$$$*
                        ##*$$$*
                        ###*$*
                        ####*
        for (int i = -4; i <= 4 ; i++) {
            for (int j = 0; j < Math.abs(i); j++) {
                System.out.print("#");
            }
            for (int j = 0; j +2*Math.abs(i)< 9; j++) {
                if(j == 0 || j == 8- 2*Math.abs(i)){
                    System.out.print("*");
                }else{
                    System.out.print("$");
                }

            }
            System.out.println();
        }
*/
/*
                        *********
                        #*$$$$$*
                        ##*$$$*
                        ###*$*
                        ####*
                        ###*$*
                        ##*$$$*
                        #*$$$$$*
                        *********
        for (int i = -4; i <= 4 ; i++) {
            for (int j = 0; j+Math.abs(i)< 4 ; j++) {
                System.out.print("#");
            }
            for (int j = 0; j-2*Math.abs(i)<=0 ; j++) {
                if(j == 0 || j == 2*Math.abs(i)||i == 4 ||i ==-4){
                    System.out.print("*");
                }else{
                    System.out.print("$");
                }

            }
            System.out.println();
        }
*/

    }
}

           

总结:

1、外循环控制行数,内循环控制列

2、内循环参数 j 判断一定会和外循环参数 i 有关

3、每一行开始增多时,j与i是正相关的;每一行开始减少时,j与i是负相关的

4、当每行增多或者减少固定倍数n时,先判断正负相关,再将外循环参数乘于n

####*
                        ###***
                        ##*****
                        #*******
                        *********
                        #*******
                        ##*****
                        ###***
                        ####*
        for (int i = -4; i <= 4 ; i++) {
            for (int j = 0; j < Math.abs(i); j++) {
                System.out.print("#");
            }
            for (int j = 0; j +2*Math.abs(i)< 9; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
           

如上图所示,#是在1-5行是递减,又因为Math.abs(i)在1-5行是递减,所以j与Math.abs(i)是正相关;5-9行是递增,Math.abs(i)在5-9行是递增,所以j与Math.abs(i)是正相关。

但是*是外循环每执行一次,内循环多执行2次,所以乘于2就可以了