利用循环语句解决打印三角形(数字三角形)、金字塔之类的问题

很多初入程序员世界的新人小白都和我一样都会遇到

这样


     

   这样  


      

还有这样的题目


  

这个时候有一个重要的解题思路就很重要,一旦知道这一类型题的思想很多题都迎刃而解。

我会把这些题的源代码放上来供参考。

第一类  ' * '  三角形

class Test{
    public static void main(String[] args){
        //嵌套循环
        for(int line=1;line<=4;line++){
            for(int i=1;i<=8;i++){
                System.out.print("*");
            }
            System.out.println();
        }
        /* 
            *           1
            **          2
            ***         3
            ****        4
            *****       5
            *******     6
            ********    7
        循环体 *
        */
        for(int line=1;line<=7;line++){
            for(int i=1;i<=line;i++){
                System.out.print("*");
            }
            System.out.println();
        }
        /*              i   j
            *           1   1
            **          2   1 2
            ***         3   1 2 3
            ****        4   1 2 3 4
            *****       5   1 2 3 4 5
            ******      6   1 2 3 4 5 6
            *****       7   1 2 3 4 5 
            ****        8   1 2 3 4
            ***         9   1 2 3
            **          10  1 2
            *           11  1
            j<=i && j<=12-i
        */
        for(int i=1;i<=11;i++){
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
        /*          k=|i-6| |k| 当前行的最大的空格数
                    k    i   j
                 * -5    1   1
                ** -4    2   1 2
               *** -3    3   1 2 3
              **** -2    4   1 2 3 4
             ***** -1    5   1 2 3 4 5
            ******  0    6   1 2 3 4 5 6
             *****  1    7   1 2 3 4 5 
              ****  2    8   1 2 3 4
               ***  3    9   1 2 3
                **  4    10  1 2
                 *  5    11  1
        */
        for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
        /*          k=|i-6| |k| 当前行的最大的空格数
                            k    i   j
                 *         -5    1        1
                * *        -4    2       1 2
               * * *       -3    3      1 2 3
              * * * *      -2    4     1 2 3 4
             * * * * *     -1    5    1 2 3 4 5
            * * * * * *     0    6   1 2 3 4 5 6
             * * * * *      1    7    1 2 3 4 5 
              * * * *       2    8     1 2 3 4
               * * *        3    9      1 2 3
                * *         4    10      1 2
                 *          5    11       1
        */
        for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("* ");
            }
            System.out.println();
        }
        /*          k=|i-6| |k| 当前行的最大的空格数
                            k    i   j
                 *         -5    1        1
                * *        -4    2       1 2
               *   *       -3    3      1 2 3
              *     *      -2    4     1 2 3 4
             *       *     -1    5    1 2 3 4 5
            *         *     0    6   1 2 3 4 5 6
             *       *      1    7    1 2 3 4 5 
              *     *       2    8     1 2 3 4
               *   *        3    9      1 2 3
                * *         4    10      1 2
                 *          5    11       1
                j==1 j==i j+i==12
        */
        for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                if(j==1||j==i||j+i==12){
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            System.out.println();
        }
    }
}

第二类数字三角形

class text{
    public static void main(String[] args){
        for(int i=1;i<7;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j);
            }
            System.out.println();
        }
        System.out.println("~~~~~~~~~~~~~~~~~~~");
        for(int i=1;i<7;i++){
            for(int j=1;j<8-i;j++){

                System.out.print(j);
            }
            System.out.println();
        }
        System.out.println("~~~~~~~~~~~~~~~~~~~");
         for(int i=1;i<7;i++){
            for(int j=1;j<=7-i;j++){
                System.out.print(" ");
                }
                for(int k=i;k>0;k--){
                    System.out.print(k);
                }
            System.out.println();
        }
        System.out.println("~~~~~~~~~~~~~~~~~~~");
        for(int i=1;i<7;i++){
            for(int j=1;j<=i;j++){
                System.out.print(" ");
            }
            for(int k=1;k<8-i;k++){

                System.out.print(k);
            }
            System.out.println();
        }
    }
}

第三类数字金字塔

import java.util.Scanner;
class text{
public static void main(String[] args){
      Scanner input=new Scanner(System.in);
        System.out.print("输入金字塔的高度:");
        int n =input.nextInt();
		for(int i=0;i<=n;i++){
			for (int j = n; j >i; j--) {
			    System.out.print(" ");
			}
			for (int j = i; j >=1; j--) {
			    System.out.print(j);
			}
			for (int j = 2; j <=i; j++) {
				    System.out.print(j);
			}
			System.out.println();
        }
	}
}
import java.util.Scanner;
public class text{
    public static void main(String[] args){
        int i=0,n=8,m=0,s;
        while(n>0){
            s=1;
            for(i=4*(n-1); i>0; --i)
                System.out.print(" ");
            System.out.print("   ");
            for(i=0; i<=m; ++i){
                s*=2;
                System.out.print(s/2+" ");
                if(s<10)
                    System.out.print("  ");
                else if(s>9&&s/2!=64)
                    System.out.print(" ");
                else if(s/2>99)
                	 System.out.print("  ");
            }
            for(i=m; i>=m; --i){
                s/=2;
                if(m==3||m==4||m==6)
                	System.out.print(" ");
                if(s/2!=0){
                     if(s/2<10)
                    System.out.print(s/2+"  ");
                else if(s/2>9){
                	System.out.print(s/2+" ");
                if(s/4<9)
                    System.out.print(" ");
                }
                else
                	System.out.print(s/2);
                System.out.print(" ");}
            }
            for(i=m-1; i>0; --i){
                s/=2;
                if(s/2<10)
                    System.out.print(s/2+"  ");
                else if(s/2>9){
                	System.out.print(s/2+" ");
                if(s/4<9)
                    System.out.print(" ");
                }
                else
                	System.out.print(s/2);
                System.out.print(" ");
            }
            System.out.println();
            --n;
            ++m;
        }
    }
}
发布了7 篇原创文章 · 获赞 0 · 访问量 137

猜你喜欢

转载自blog.csdn.net/weixin_43748564/article/details/104252808
今日推荐