迴圈巢狀的實際運用

2021-09-24 13:14:39 字數 1873 閱讀 3249

迴圈是一直做重複的事情,直到達成一定的條件就自動跳出迴圈的一種判斷語句。迴圈在現實生活中也有很多例子,例如在聊天時為了讓對方知道自己的愛意,要求自己輸入25遍的4

「i love you」這一句話時,我們可以有兩種選擇去做,第一種就我們最原始的方法:手動敲。一邊敲一邊自己數,然後敲著敲著發現不是覺得無聊,就是怕一不小心數錯了。那麼這時候我們可以使用迴圈來列印我們所需要的資料,從上面我們可以知道的條件有,我們要列印的具體的內容是 「i love you」,已經結束條件是

25次,那麼for迴圈**的寫法是:

迴圈**的結構是:for(迴圈初始變數;判斷結束條件;步進方程)

那麼讓我們執行一下**,看一下效果。

當**第一次執行時首先建立乙個變數i , i

的初始值為

0,然後用0去跟25判斷是不是小於25,判斷成立就執行話括號裡面的**體,也就是例子裡面的列印輸出語句。

等執行完方法體後,那麼

i的值會根據步進方程去改變一次,這裡是我執行一遍後,

i就變成了

1,然後再去跟25判斷,成立就繼續執行花括號裡面的**。

以此類推,直到執行到當

i=25

的時候再去跟

25判斷,此時

i不再小於

25,這時候就跳出迴圈,也就是說當i=25就跳出迴圈,我們乙個共執行了

0-24

次,從0

數到24

,剛好是

25次。

宣告for迴圈的初始值不一定是0,也可以是其他數字,如何初始值是1,那麼如果還是要迴圈25次,那麼條件就要改為小於26了,執行1到25,剛剛好25次。

那為什麼我們在程式設計中喜歡從零來開始,因為,我們計算機的計算的索引值都是從

0當我想不再寫重複那麼多單調的話,我想在寫完一句「

i love you

」之後再加上一句

」you love me ?」,那又該怎麼寫呢?,這時候就要用到我們的迴圈巢狀了,迴圈巢狀就是再乙個迴圈裡再寫乙個迴圈這樣的語法系統是允許的,寫法格式是:

5迴圈巢狀的**的結構是:for(迴圈初始變數;判斷結束條件;步進方程)

}可以看到我們這裡有兩個迴圈語句,然後實現上面效果的例項如圖所示:

上面我們說到,只有滿足判斷條件,迴圈才能跳出,上面的**當我執行第乙個迴圈是時,首先列印一句i love your ,然後再執行第二個迴圈,第二個迴圈輸出的是3條問句,然後就跳出迴圈,然後就完成了第乙個迴圈的第一次,然後第乙個迴圈的i值變成1,再次迴圈,系統判定是執行完一次方法體裡面的**才是執行完一次,因為步進方程是在執行完方法體之後再對

i進行重新賦值的。所以內側迴圈的次數跟外層沒有關係,上面**的理想結果是:

「i love you !」

「your love me?」

「your love me?」

「your love me?」

以上是第一層迴圈的一次

「your love me?」

是第二層迴圈的一次,執行第一層迴圈一次,第二層迴圈就要執行3次,。完整結果如圖所示:

可以看到,圈出來的是第乙個迴圈的一次,每個第一層迴圈都要到達第二層完整才能跳出第一層迴圈。即使第二層條件是100也不影響第一層迴圈的總數,只是第一層迴圈執行完要很久。

ThreadLocal的實際運用

之前在利用zookeeper實現分布式鎖時候,使用了concurrenthashmap儲存currentpath等,現在有了threadlocal,我們可以直接使用threadlocal了 把myzookeeperlock的類進行修改,其他 不變,依然可以用 public class myzooke...

演算法實際運用

我們在linux中用select實現多路復用中有幾個巨集 fd set fd clr fd zero在這裡充分利用到了集合的概念和演算法 因一項工作而卡住需等待這項工作時,導致別的工作不能完全進行 這樣浪費資源和時間 怎麼處理呢 這裡有幾種解決的方法 其中一種就是每隔一段時間進行迴圈檢測看這項工作是...

js實際運用

實現效果 點選新增,左邊框中的選中項消失,新增到右邊的框中 點選移除,右邊的不消失,但會增加到左邊的框中。c autoeventwireup true codefile default2.aspx.cs inherits default2 兩段js碼,第乙個為新增,第二個為移除 移除中,建立乙個新物...