JAVA-初步認識-第四章-語句-for循環嵌套


一. 語句嵌套

在語句中加入一些其它語句,比如for語句中,加入了if語句。其實就是在原有語句的循環體基礎上,對其進行擴展,添加了一些語句。

嵌套的形式有很多種,沒有必要刻意地去記錄,當需要使用的時候去用即可。這里將討論一種特殊的嵌套形式。

在for語句的循環體,加入for語句,這樣的結構稱為for語句的嵌套結構。(加入其他的語句也稱為嵌套結構么?這里應該是強調for語句的嵌套結構)這里有內外循環。

循環嵌套例子的練習。值得注意的就是一個空白換行語句

for嵌套的思想:外面有很多行,每一行里面有很多變量。→多行多列

注解:針對上圖的習題,我原本想的是用for嵌套不靠譜,因為,雖然是多行,每行也有多個符號,而且符號一致,但畢竟每行*不一樣。但對於這種規則的排列,背后一定能找到規律,需要對嵌套語句的書寫做一定的改變。不能拘泥於一模一樣的每行每列。

注解:上面是我給出的解題,我的思路就在於每一行的行數和該行的列數,的和是一個固定的值,都是6,當外循環不斷增大時,用外循環的值,來控制內循環的循環次數,這個思想就是視頻中的0~5,0~4,0~3....(要熟記正斜三角和反斜三角的語句書寫。)

雖然我們解答了題目,但是我們研究一下視頻中的解題思路,便於我們深入地理解for嵌套。

 

無論哪個思路,都是在矩形的基礎上進行修改,得到正斜或者反斜的布局。

思路1:原有程序輸出的是一個固定行數和列數的*圖案,但是在本題中,每一行的列數在不斷減少,這就意味着我們要改變內循環。做出什么樣的改變?每一次輸出都是一個*號(例題本質上是相同語句的重復輸出),*號在減少,意味着我們要減少循環的次數其實,五行和五列是固定的,只是在輸出的時候變化了,現在固定5,前面的數不斷變大,自然結果在縮小。還有一種是改變尾,這兩種情況都能實現列的遞減。

意味着y<=5的語句中,5是在變化的。要重新定義一個變量來控制尾數。

思路1中的x和z不是一致變化的, 除非改變x的變化規律,就可以使用x來代替z了。

思路2:采用1~5,2~5,3~5,改變的是前面的數。就用變量來操縱前面的數。由於z的變化和x一致,就直接可以用x來代替z。

解析過程:for嵌套針對的是這種行,和列重復輸出的題目。在本需求中,行數是固定不變的,那么控制行數的外循環次數就不變,循環次數的求解可以是1~5,++來求解,也可以是5~1,--來求解。但是有一點必須明確,外循環次數是固定的。需求中,每行中列的數目在變化,也就意味着控制內循環-循環次數的事物也是在變化着的(內循環次數代表着列數)。解題的核心在於,外循環次數不變,內循環次數在變。內循環步長的減少(步長的減少?),在書寫時,分為兩種,1~5尾數在變小,1~5前數在變大。專門定義一個變量來控制內循環的變量的變化,即z,同時也可以用外循環x的變化來替代z。

注意:在對視頻的學習中,外循環(代表着行數)一定是從1~5么,內循環(代表着列數)一定是從5~1么,都不是,無論是從1~5,還是從5~1,抑或是1~4,1~3....這些都是表象,都是為了計數用的,本質是為了控制循環的次數。從1~5是控制次數,從5~1就不是了么?怎么可能,都一樣的,只是個人習慣不一樣,理解起來的程度不一樣。

為了長期使用的方便,我們羅列一個固定的形式,外循環固定不變,for (int x=0; x<=4; x++),所有的變動都集中在內循環上,在利用外循環變量的基礎上,有正斜和反斜兩種情況。在正斜或反斜中,對於內循環變量循環次數的控制也有兩種,前數變動和尾數變動。

外循環固定不變,for (int x=0; x<=4; x++)

內循環:a. 反斜: 尾數變動 for (int y=x; y<=4-x; y++)    哪個數在動,內循環中,就是哪個數在變,

          前數變動 for (int y=x; y<=4; y++)

    b. 正斜: 尾數變動 for (int y=0; y<=x; y++)

          前數變動 for ( int y=4-x;y<=4 ; y++) 

1.定義z,不牽涉x,且1~5前數在變的情況。

定義z,且前數在變,為了減少變量,可以利用外循環的變量來替代z。能夠替代的原因在於都是自增的時刻和初始值可以保持一致。

2. 使用z變量,1~5尾數在變化。用x替代z的情況也列在下面。

 總結:本節談論的是for嵌套for語句的練習,在控制台上輸出一個布局為矩形或者三角形。練習能夠采用循環結構的for語句實現,本質在於練習是在重復進行相同的操作—輸出。控制內外循環的兩個變量都有兩種變化形式,內循環可以是前數或者尾數在變,外循環可以是從小到大,或者從大到小在變。


免責聲明!

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



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