1. 程式人生 > >關於使用Java中的for循環和if語句打印空心菱形的詳細分析(也算是通過重新梳理一遍來加深自己的理解吧!)

關於使用Java中的for循環和if語句打印空心菱形的詳細分析(也算是通過重新梳理一遍來加深自己的理解吧!)

初始化 span 賦值 公式 數列 image 一中 more for循環

啥也別說了,小二,先上代碼:

技術分享圖片(圖一)

如以上代碼所示,由於程序的執行順序是從左至右,由上而下的,所以當我們想要在DOS窗口打印 一個空心菱形如圖二所示

技術分享圖片(圖二)

時:我們可以將其分成上下兩部分,

圖一中,我們首先創建一個Scanner對象,通過它的nextInt()方法從DOS窗口接收一個由鍵盤錄入的int類型的數值(Scanner類的詳細信息請查看JavaAPI)。然後將這個數賦值給total這個變量,即我們想要打印的空心菱形的總行數。

通過total,分別給定上半部分的行數half和下半部分的行數halfMore。

這時,我們分兩部分來進行:(以total=9為例)

  上半部分:

    這個時候,上半部分的行數為3行,首先用一個外層語句來控制要打印的行數,如圖一中的⑴行的語句。

    這個循環的內部內容:

      我們每一次循環即在從左至右,由上而下的打印順序下每一行要依次打印些什麽!

      在打印的過程中涉及三個主要要素:行數、空格數、星號數;

                一個次要要素:換行。

      首先,因為我們讓外層循環控制的是“行數”,所以,我們要分別分析空格數和行數、星號數和行數之間的聯系:

        左邊空格數和行數:

          第n行    左邊空格數an

            1      4

           2      3

           3      2

           4      1

        可以看出,在行數呈等差遞增的時候,左邊空格數是呈等差遞減的。

        即:a1 = 4;

          a2 = 3;

          a3 = 2;

          a4 = 1; 由等差數列的通項公式:an = a1 + (n-1)*d 得:an = 3 + (-1)(n-1) = 3 - n + 1 。

                               也就是:左邊空格數 = 行數 - 第幾行 + 1 。

          用for循環打印就如圖一中的⑵行的代碼。

        左邊的空格打印好了後緊接著就是打印一個星號,再打印中間空格數:

        中間空格數和行數:

          第n行    中間空格數an

           1       0

           2       1

           3       3

           4       5

        同求左邊空格的做法大致一樣,稍微不同的是,除了首項外其余項呈等差遞增。

        由於我們采用的是for循環,循環初始化條件為1,所以當我們的循環條件為負數時,打印的次數也是0次。

        於是我們可以將首項置為-1,則有: an = -1 + (n-1)* 2 = 2 * n - 3 。這就有了圖一中的⑶行的代碼。

        ⑷行的判斷語句是用來打印除了第一行之外的右邊的星號,最後,最外層控制行數的循環每轉一次就換一次行。

  下半部分:分析思路同上半部分的,就是跟上半部分的相反打印罷了。

最後,一定要牢記,編程時:

            思路一定要時刻清晰!

         思路一定要時刻清晰!

         思路一定要時刻清晰!

關於使用Java中的for循環和if語句打印空心菱形的詳細分析(也算是通過重新梳理一遍來加深自己的理解吧!)