for循環打印金字塔


class  Test
{
    public static void main(String[] args) 
    {
        //練習打印*組成的金子塔形
        /*  *
           ***
          *****
         *******   */
    //先分析:金子塔的數量為:1->1 2->3 3->5 4->7 內層的*數是一個等差數列公式為:an=a1+(i-1)*d 表示應該能夠打印的*數
    //先寫固定的層數:外層表示層數,內層表示打印的*數(寫死層數便於思考,以后只需修改層數就OK)
    int lay=4;//寫在外面方便控制層數的修改
    for(int i=1;i<=lay;i++){
        for(int j=1;j<=1+(i-1)*2;j++){
            System.out.print("*");
        }
          System.out.println();//沒打印完一層就換行
    }
System.
out.println("------------------------分割線------------------------------------------------"); //上述打印出來的其實已經是一個完整的金字塔形了 不過只是缺少空格 繼續加入空格 往右邊擠一下 /* * *** ***** ******* */ //空格的規律:1->3 2->2 3->1 4->0 呈現遞減效果 int lay1=10; for(int i=1;i<=lay1;i++){ for(int k=1;k<=lay1-i;k++){//打印的空格是跟隨層數的變化而變化的   System.out.print(" ");//打印空格 }     for(int j=1;j<=1+(i-1)*2;j++){//打印的*呈現等差數列     System.out.print("*");   }     System.out.println();//沒打完一層*就換行 } //在上面的基礎上打出一個鏤空的金子塔形 /* * * * * * ******* */ /*分析: 1、首先是在前面的基礎上的內層循環打*的部分 要做判斷 2、如果是第一層和最后一層則全部打出* 3、中間層判斷是打第一個*和最后一個* 其余的都打空格 ---如果去考慮空格會麻煩一些 */ System.out.println("------------------------分割線------------------------------------------------"); int lay3=4; for(int i=1;i<=lay3;i++){ for(int k=1;k<=lay3-i;k++){ System.out.print(" "); }   for(int j=1;j<=1+(i-1)*2;j++){   if(i==1||i==lay3){//如果層數是第一層或者最后一層則 打出*   System.out.print("*");    }
              else{//中間層的情況 繼續分類 if(j==1||j==1+(i-1)*2){//表示中間層的第一個*和最后一個* 應該要打印 System.out.print("*"); } else{ System.out.print(" ");//否則打印空格 } } }     System.out.println();//內層循環打印*結束后換行 } } }

 

繼續在上面的基礎上進行 加工打印出一個鏤空的菱形

class  Test
{
    public static void main(String[] args) 
    {
        //打印鏤空的菱形
        /*  *
           *  *    
          *     *
         *       *
          *     *
           *   *
             *        */

        //分析:鏤空的菱形由上三角和下三角組成 並且三角形式鏤空的
        //根據前面打印的鏤空三角形的基礎上去組個---告訴我們一個道理遇到稍微復雜的問題:應該善於拆解成一個一個的組件然后分別測試后進行組合

        //先打印一個鏤空的三角形
        /*  *
           * *
          *   *
         *******   */
    


        int lay=4;
        for(int i=1;i<=lay;i++){//1、外層循環控制層數
                
            for(int k=1;k<=lay-i;k++){//3、打印空格
                System.out.print(" ");
            }
            for(int j=1;j<=1+(i-1)*2;j++){//2、利用等差數列的原理,an=a1+(n-1)*d 每次等打印最多的*就是an項的值
                if(i==1){//4、首層打*最后一層不打*
                    System.out.print("*");    
                }
                else{
                    if(j==1||j==1+(i-1)*2){//5、中間層有*的部分是第一個和最后一個
                        System.out.print("*");
                    }
                    else{
                        System.out.print(" ");//6、中間層其余部分全是空格
                    }
                }        
            }
            System.out.println();
        }
//System.out.println("------------------------分割線------------------------------------------------");
        //上面的部分打印好了 繼續打印下面的部分    
/*      *******
         *   *
          * *
           *
                    */
        //慣例:先打印出實心的三角形
            
            /*      *******
                     *****
                      ***
                       *
                    */


        //分析:1->7 2->5 3-3 4->1

            int lay1=4;
            for(int i=lay1;i>=1;i--){//第一層實際上是最后一次 所以反轉
                    for(int k=0;k<lay1-i;k++){//層數和空格對應關系的變化:4->0 3->1 2->2 1->3 
                        System.out.print(" ");
                    }    
                for(int j=2*i-1;j>=1;j--){//第一層的*數 建立和層數的關系
                    if(i==1){//只有最后一層才打1個*
                    System.out.print("*");
                    }
                    else{
                        if(j==2*i-1||j==1){
                            System.out.print("*");
                        }
                        else{
                            System.out.print(" ");
                        }
                    }
                    
                
                }
                System.out.println();
            }



    }    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM