關於使用Java中的for循環和if語句打印空心菱形的詳細分析(也算是通過重新梳理一遍來加深自己的理解吧!)
啥也別說了,小二,先上代碼:
(圖一)
如以上代碼所示,由於程序的執行順序是從左至右,由上而下的,所以當我們想要在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語句打印空心菱形的詳細分析(也算是通過重新梳理一遍來加深自己的理解吧!)