程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java打印正金字塔,倒金字塔和“水影”金字塔

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

編輯:關於JAVA

java打印正金字塔,倒金字塔和“水影”金字塔。本站提示廣大學習愛好者:(java打印正金字塔,倒金字塔和“水影”金字塔)文章只能為提供參考,不一定能成為您想要的結果。以下是java打印正金字塔,倒金字塔和“水影”金字塔正文


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 4  5-1  1  1*2-1  2 3  5-2  3  2*2-1  3 2  5-3  5   3*2-1 4 1  5-4  7   4*2-1 5 0  5-5  9   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("您輸出的不是數字,一遍浪去,不聽話的孩子!");
    }

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved