for循环打印金字塔

显示金字塔:

提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案。

第一步:确定最外层循环-行数i:0 1 2 3 4 5 6 7

第二步:找出打印空格的规律k:7 6 5 4 3 2 1 0        i+k=7

第三步:找出要打印数字的规律:|i-1|

/*分析:
1.首先i表示行数;k表示空格数;拿第5行举例:当i等于5是:
                要打印:    4  3  2  1 2 3 4 也就是打印|x-1| -3<=x<=3
i       k                     
1       6                       1
2       5                     2 1 2                 |x-1|  4  3  2  1 2 3 4
3       4                   3 2 1 2 3                x-1  -4 -3 -2 -1 2 3 4
4       3                 4 3 2 1 2 3 4                x  -3 -2 -1  0 1 2 3
5       2               5 4 3 2 1 2 3 4 5 
6       1             6 5 4 3 2 1 2 3 4 5 6              x(-3,3)
7       0           7 6 5 4 3 2 1 2 3 4 5 6 7               */
import java.util.Scanner;
class Text14{
    public static void main(String[] args){
        System.out.print("Enter the number of lines:");    //提醒用户输入信息
        Scanner scanner = new Scanner(System.in);
        int p = scanner.nextInt();                         //输入一个1到15之间的数字
        for(int i=1;i<=p;i++){                             //最外层循环-表示行数
            for(int k=1;k<=p-i;k++){                       //内层循环-表示空格数
                System.out.print("    ");                  //打印空格
            }
            for(int x=-(i-1);x<=(i-1);x++){                //与空格数的循环并列-表示要打印的数字
                System.out.printf("%4d",Math.abs(x)+1);    //打印数字
            }
            System.out.println();                          //换行
        }
    }
}

运行结果:

使用for循环打印四个图案:

图案1:

第一步:确定外层for循环:行数  1 2 3 4 5 6

第二步:确定内层循环:找出打印的数字的规律   从1到i  (1~i)

class Text15_01{
    public static void main(String[] args){
        for(int i=1;i<=6;i++){                //外层循环控制行数
            for(int j=1;j<=i;j++){            //内层循环控制打印内容
                System.out.print(j+" ");      //打印的内容
            }
            System.out.println();             //换行
        }
    }
}

图案2:

/*
i 表示行数,j表示每行打印数字的最大值
                i    j   
1 2 3 4 5 6     6    6
1 2 3 4 5       5    5
1 2 3 4         4    4
1 2 3           3    3
1 2             2    2
1               1    1
外层循环:1.循环初始化:i=6
        2.循环继续条件:i>=1
        3.循环体:整个内层循环
        4.循环的周期,步长,间距:i--
内层循环:1.循环初始化:j=1
        2.循环继续条件:j<=i
        3.循环体:System.out.print(j+" ");
        4.循环的周期,步长,间距:j++
*/
class Text15_02{
    public static void main(String[] args){
        for(int i=6;i>=1;i--){
            for(int j=1;j<=i;j++){
                System.out.print(j+" ");
            }
            System.out.println();
        }
    }
}

图案三:

/*
i表示行数;k表示打印的空格数;j表示打印数字的最大值
                i   k    j    i+k=6
          1     1   5    1
        2 1     2   4    2
      3 2 1     3   3    3
    4 3 2 1     4   2    4
  5 4 3 2 1     5   1    5
6 5 4 3 2 1     6   0    6
外层循环:1.循环初始化:i=1
        2.循环继续条件:i<=6
        3.循环体:整个内层循环
        4.循环的周期,步长,间距:i++
内层循环1:1.循环初始化:k=1
         2.循环继续条件:i<=6-i
         3.循环体:System.out.print("  ");
         4.循环的周期,步长,间距:i++
内层循环2:1.循环初始化:j=1
         2.循环继续条件:j>=1
         3.循环体:System.out.print(j+" ");
         4.循环的周期,步长,间距:j--
*/
class Text15_03{
    public static void main(String[] args){
        for(int i=1;i<=6;i++){                //外层循环-控制行数
            for(int k=1;k<=6-i;k++){          //内层循环1-控制打印的空格数
                System.out.print("  ");       //打印空格
            }
            for(int j=i;j>=1;j--){            //内层循环2-控制打印的数字
                System.out.print(j+" ");      //打印数字
            }
            System.out.println();             //换行
        }
    }
}

图案四:

/*
i表示行数;j表示打印的空格数; k表示打印数字的最大值
               i    j    k
1 2 3 4 5 6    1    0    6
  1 2 3 4 5    2    1    5 
    1 2 3 4    3    2    4
      1 2 3    4    3    3
        1 2    5    4    2
          1    6    5    1
*/
class Text15_04{
    public static void main(String[] args){
        for(int i=6;i>=1;i--){            //外层循环-控制行数
            for(int j=6-i;j>=1;j--){      //内层循环1-控制打印空格数
                System.out.print("  ");   //打印空格
            }
            for(int k=1;k<=i;k++){        //内层循环2-控制的打印的数字
                System.out.print(k+" ");  //打印数字
            }
            System.out.println();         //换行
        }
    }
}

图案五:

/*
                      2^0 
                  2^0 2^1 2^0
              2^0 2^1 2^2 2^1 2^0
          2^0 2^1 2^2 2^3 2^2 2^1 2^1 
      2^0 2^1 2^2 2^3 2^4 2^3 2^2 2^1 2^0
  2^0 2^1 2^2 2^3 2^4 2^5 2^4 2^3 2^2 2^1 2^0                       i       x      
                               1                                    1       8         
                           1   2   1                                2       7       
                       1   2   4   2   1                            3       6       
                   1   2   4   8   4   2   1                        4       5       
               1   2   4   8  16   8   4   2   1                    5       4       
           1   2   4   8  16  32  16   8   4   2   1                6       3       
       1   2   4   8  16  32  64  32  16   8   4   2   1            7       2       
   1   2   4   8  16  32  64 128  64  32  16   8   4   2   1        8       1
            y  0  1  2  3  4  3  2  1 0     i=5     
            x -4 -3 -2 -1  0  1  2  3 4     x=-y+4               x(-(i-1),i-1)
           -y  0 -1 -2 -3 -4 -3 -2 -1 0     |x|=-y+n   n=i-1          y=i-1-|x|
         -y+4  4  3  2  1  0  1  2  3 4     要打印的是2^y
*/
class Text16_01{
    public static void main(String[] args){
        int a;
        for(int i=1;i<=8;i++){                //外层循环-控制行数
            for(int s=8-i;s>0;s--){           //内层循环1-控制打印空格数
                System.out.print("    ");     //打印空格
            }
            for(int j=-(i-1);j<=i-1;j++){     //内层循环2-控制打印的数字                       
                System.out.printf("%4d",a=(int)(Math.pow(2,i-1-Math.abs(j))));
            }                                 //打印数字2^(i-1-|x|)
            System.out.println();             //换行
        }
    }
}
发布了21 篇原创文章 · 获赞 0 · 访问量 258

猜你喜欢

转载自blog.csdn.net/whydeboke/article/details/104267481