public class testbackpressure else }}
for (int i = 0; i < week.size(); i++)
}}
這段**要達到的目的就是將存在相同元素的model 更改狀態為選中 同時跳出避免多次迴圈 不相同的為不選中
開始我以為這樣是沒問題的但是 事實證明 打臉了。。
只改變最後乙個list 中最後乙個與week 存在相同元素model的值
wtf -> 因為外部迴圈只迴圈list.size 內部迴圈week.size 問題來了 看輸出結果
testbackpressure.main->list->i->0->week->j->0->ischeck->true
testbackpressure.main->list->i->1->week->j->0->ischeck->false
testbackpressure.main->list->i->1->week->j->1->ischeck->false
testbackpressure.main->list->i->1->week->j->2->ischeck->true
testbackpressure.main->list->i->2->week->j->0->ischeck->false
testbackpressure.main->list->i->2->week->j->1->ischeck->false
testbackpressure.main->list->i->2->week->j->2->ischeck->false
testbackpressure.main->list->i->2->week->j->3->ischeck->false
testbackpressure.main->list->i->2->week->j->4->ischeck->true
testbackpressure.mainfalse
testbackpressure.mainfalse
testbackpressure.mainfalse
testbackpressure.mainfalse
testbackpressure.maintrue
testbackpressure.mainfalse
testbackpressure.mainfalse
直關的看 list i=0 week j=0 變成了true 當list i=1 week j=0 時 又復寫成了false 這是因為week 多次迴圈導致
week 會迴圈多次 與list中的某一項進行比較 所以值會複寫多次並只變換list中最後項滿足條件的資料
當list i=0 week j=0 此時list.get(0) 與week.get(0).getweeknum() 是相同的 執行if week1.setcheck(true); break 第乙個資料選中
第乙個看似沒問題 好我們來看第二次
當list i=1 此時內層迴圈重新開始 week j=0 此時list.get(1) 與week.get(0).getweeknum() 是不同的 執行else week1.setcheck(false); 繼續迴圈 外層i 不變內層 i=1 值比較依然不同 執行else week2.setcheck(false).......
注意 看外層迴圈第二次 內層迴圈第二次的情況下 內層要改變的資料依然會重新迴圈 資料自然覆蓋掉i=0時的值
重新賦值為i=1時候week 中model的值 一直到最後i=2 又會覆蓋掉i=1 時 week 中model 的值 此時只保留最後 i=3 時week中model的值---->只保留最後一次 下面是輸出結果 可以看到只有第五項是改了的 第一項和第三項是false
那我們怎麼避免上面的問題呢
改變哪個資料集合中的值 就讓哪個再外層迴圈 滿足條件後break 跳出接著執行下一次迴圈
比如上面我們要改變的時week 中的值 那 外層迴圈 week.size 內層迴圈list.size 這樣迴圈邏輯就變了
這樣week 只迴圈一次 list迴圈多次week.get(i) 隨著i的值增加去 與list 中所有的資料進行比較當條件滿足i+1 接著去和list中的資料比較 避免重複更改 week中的資料 這樣就可以了。。。。雖然很簡單 還是記一下
for (int i = 0; i < week.size(); i++) else
}}
輸出結果可以看到要改的 第一三五項均已更改 觀察i 與j的值 可以知道迴圈比較過程
testbackpressure.main->week->i->0->list->j->0->ischeck->true
testbackpressure.main->week->i->1->list->j->0->ischeck->false
testbackpressure.main->week->i->1->list->j->1->ischeck->false
testbackpressure.main->week->i->1->list->j->2->ischeck->false
testbackpressure.main->week->i->2->list->j->0->ischeck->false
testbackpressure.main->week->i->2->list->j->1->ischeck->true
testbackpressure.main->week->i->3->list->j->0->ischeck->false
testbackpressure.main->week->i->3->list->j->1->ischeck->false
testbackpressure.main->week->i->3->list->j->2->ischeck->false
testbackpressure.main->week->i->4->list->j->0->ischeck->false
testbackpressure.main->week->i->4->list->j->1->ischeck->false
testbackpressure.main->week->i->4->list->j->2->ischeck->true
testbackpressure.main->week->i->5->list->j->0->ischeck->false
testbackpressure.main->week->i->5->list->j->1->ischeck->false
testbackpressure.main->week->i->5->list->j->2->ischeck->false
testbackpressure.main->week->i->6->list->j->0->ischeck->false
testbackpressure.main->week->i->6->list->j->1->ischeck->false
testbackpressure.main->week->i->6->list->j->2->ischeck->false
testbackpressure.maintrue
testbackpressure.mainfalse
testbackpressure.maintrue
testbackpressure.mainfalse
testbackpressure.maintrue
testbackpressure.mainfalse
testbackpressure.mainfalse
雙重for迴圈
雙重for迴圈就是在乙個for迴圈裡在巢狀另乙個for迴圈,ji 即兩個迴圈巢狀,還有多重迴圈巢狀的情況,但用的比較少,一般常用的是兩個迴圈巢狀,很少使用多重迴圈,因為for迴圈多了會導致 執行的效率低,而且容易宕機,多迴圈中的總迴圈次數是相乘的,巢狀幾次後幾何級數增長,因此通常情況下在迴圈多次巢狀...
雙重for迴圈
雙重for迴圈 1 概述 很多情況下,單層for迴圈並不能滿足我們的需求,比如我們要列印乙個5行5列的圖形,列印乙個倒直角三角形等,此時就可以通過迴圈巢狀來實現 迴圈巢狀是指在乙個迴圈語句中再定義乙個迴圈語句的語法結構,例如在for迴圈語句中,可以再巢狀乙個for迴圈,這樣的for迴圈語句我們稱之為...
迴圈語句及雙重迴圈
複習 1!2!3!9!10!sum public class test system.out.println sum 雙重迴圈,即乙個迴圈內嵌著另外乙個迴圈,外面的迴圈每跑一遍,內迴圈均要全部跑完。練習1 利用雙迴圈列印倒三角 public class test1 system.out.printl...