java列印正金字塔,倒金字塔和“水影”金字塔

來源:互聯網
上載者:User

標籤:number   .com   com   數字   html   有意思   triangle   ret   菱形   

java列印正金字塔,倒金字塔和“水影”金字塔

                                              --------原創文章,若要轉載,請註明出處

  小小少年   閑來無事,想起自己初學java的時候做的經典的無非就是列印出一些有意思的圖形,心血來潮自己就寫了這麼一個列印金字塔的demo,自己回顧一下當初的感受,同時也  分享給初學java的同道中人,一起來培養編程的興趣<(^-^)>。  金字塔圖案  1,問題分析  我們都知道,列印輸出的時候,都是從最左端輸出,而這裡,第一個星號是在中間。這實際是因為星號之前有很多空格。當我們使用問號來表示空格,實際的輸出效果應該是圖1.2的形式。              1.1                1.2  分析,我們可以看到本次列印出的金字塔有5行,每一行都會列印出幾個空格,然後再列印出幾個★號,這樣我們就知道該如何確認程式的架構了。      public static void Triangle(){        for(int i = 1;i <= 5;i++){    //迴圈5次,列印5行                        //列印空格數                        //列印★數          System. out.pringln();      //列印出行數        }      }  現在我們知道了需要的的行數,那麼接下來我們需要確認空格數和★數有多少,我們來看它的規律。2,尋找空格和★號的規律。

  ,我們可以發現:第1行的空格為4個,第2行是3個,第3行是2個,……,每行依次遞減,直至最後一行空格數為0;而星號數目是第1行是1個,第2行是3,第3行是5,……,每行依次遞增2,直至最後一行星號數為9。總結資料,我們可以得到表1.1所示的規律。

空格和星星的規律
行數 空格數 星星數
1 5-1  1*2-1 
2 5-2  2*2-1 
3 5-3   3*2-1
4 5-4   4*2-1
5 5-5   5*2-1
規律  依次減1  5-行數  依次加2  行數*2-1 

   根據圖中我們可以發現這種規律,那麼接下來是不是就簡單了。

3,確定空格數

  由於每行空格數有著“5–行數”的規律。所以在第i行的時候,空格數就為5–i。所以我們只要把5–i個空格列印出來即可。

    

      public static void Triangle(){        for(int i = 1;i <= 5;i++){    //迴圈5次,列印5行           for(int j = 1;j <= 5-i;j++){              System.out.print(" ");     //列印空格數           }                                      //列印★數          System. out.pringln();      //列印出行數        }      }  注意列印空格數的時候不要輸成了println();這樣會換行的。 4,列印星星數   由於每行星號數有著“行數*2–1”的規律。所以在第i行的時候,星號數就為2*i–1。所以我們只要把2*i–1個星號列印出來即可。            public static void Triangle(){        for(int i = 1;i <= 5;i++){    //迴圈5次,列印5行           for(int j = 1;j <= 5-i;j++){              System.out.print(" ");     //列印空格數           }                                   for(int k = 1; k <= 2 * i - 1;k++ ){              System.out.print("★");    //列印★數           }                                    System. out.pringln();      //列印出行數          }        }   OK,程式到此分析完畢,而我們的正金字塔也列印出來了,我回顧了,你懂了嗎?o( ̄▽ ̄)d    正金字塔的思路就是這樣,那麼對應的倒金字塔的思路與此如出一轍,我就不在此一一寫了,相信聰明的你能夠很好的解決的,我就單純的把倒金字塔空格和星星數的規律和我寫的一個demo放在下面吧。       
行數 空格數 星星數
1 0 1-1 9 5*2-1
2 1 2-1 7 4*2-1
3 2 3-1 5 3*2-1
4 3 4-1 3 2*2-1
5 4 5-1 1 1*2-1
規律 依次遞增1 行數-1 依次遞減2 行數*2-1(反向)
     ****噠噠****:關於菱形,大家可以參考我的隨筆 javaScript列印正倒直線 來做哦。O(∩_∩)O嗯!  我的例子  1,下面是我寫的一個demo,大家可以參考看看哦。

package com.javase.demo;

import java.util.Scanner;

 

    /**
    * 金字塔
    * @author Mr.Zhang
    *
    */
    public class Pyramid {

      static Scanner input = new Scanner(System.in);
    /**
    * *****列印金字塔*****
    * 1,確定金字塔行數
    * 2,確認空格數
    * 3,確認星星數
    * @param args
    */
    public static void main(String[] args) {

      entrance();

    }

    /**
    * 入口項
    */
    public static void entrance() {
      System.out.println("請選擇(0--正金字塔,1--倒金字塔,2--菱形金字塔)");
      String select = input.nextLine();

      if(isNumber(select)){
        int selectInt = Integer.parseInt(select);

        switch(selectInt){
          case 0:
            uprightPyramid();
            break;
          case 1:
            fallPyramid();
            break;
          case 2:
            System.out.println("該功能尚未完善!");
            break;
          default:
            System.out.println("請輸入正確的選項!");
            entrance();
            break;
        }
      }else if(!select.equals(0) || !select.equals(1) || !select.equals(2)){
        nullSuccess();
      }
    }

    /**
    * 列印正金字塔
    * @param input
    */
    public static void uprightPyramid() {
      System.out.println("請輸入行數:");
      String row = input.nextLine();

      if(isNumber(row)){
        int rows = Integer.parseInt(row);
        for(int i = 1;i <= rows;i++){ //迴圈輸入的行數,

          for(int j = 1;j <= rows - i;j++){ //輸出迴圈每行的空格
            System.out.print(" ");
          }

          for(int k = 1;k <= 2 * i - 1;k++){ // 輸出迴圈每行的★
            System.out.print("★");
          }

          System.out.println();
        }
          System.out.println("列印完成,線程結束");
      }else{
        nullSuccess();
      }

    }
    /**
    * 列印倒金字塔
    */
    public static void fallPyramid(){
      System.out.println("請輸入行數:");
      String row = input.nextLine();
      if(isNumber(row)){
        int rows = Integer.parseInt(row);

        for(int i = rows;i >= 1;i--){
          for(int j = 0;j < rows-i;j++){ //列印空格數
            System.out.print(" ");
          }

          for(int k = 0;k < i * 2 - 1;k++){ //列印★數
            System.out.print("★");
          }

          System.out.println();
        }

        System.out.println("列印完成,線程結束");
      }else{
        nullSuccess();
      }

    }

    /**
    * 判斷是否為數字
    * @param str
    * @return
    */
    public static boolean isNumber(String str){
        boolean ok = false;
        if(null != str && str.matches("^[0-9]")){
          return true;
        }
      return ok;
    }

    /**
    * 調用錯誤結果
    */
    public static void nullSuccess(){
      System.out.println("您輸入的不是數字,一遍浪去,不聽話的孩子!");
    }

}

java列印正金字塔,倒金字塔和“水影”金字塔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.