上一節(jié)我們學(xué)習(xí)查找,是把符合條件的數(shù)據(jù)打印出來(lái)。有的時(shí)候我們不想打印,只想知道有沒(méi)有符合條件的數(shù)據(jù),該怎么做呢?下面的例子查找一組人名,如果人名中包含“諾貝爾”,就打印“有諾貝爾”,如果沒(méi)有,就打印“木有木有”:
通過(guò)源代碼可以看到,數(shù)組的第二個(gè)元素就是要查找的“諾貝爾”,運(yùn)行結(jié)果是這樣的:
這段代碼有一個(gè)邏輯錯(cuò)誤,事實(shí)上,數(shù)組中只要有一個(gè)“諾貝爾”就可以認(rèn)定“有諾貝爾”,但必須所有的名字都不是“諾貝爾”,才能認(rèn)定“木有木有”。
或者這么說(shuō):一組數(shù)據(jù)中只要有一個(gè)符合條件,就可以認(rèn)為“有符合條件的數(shù)據(jù)”;但只有一組數(shù)據(jù)中每一個(gè)都不符合條件,才能認(rèn)為“沒(méi)有符合條件的數(shù)據(jù)”——一個(gè)相等即為"有",全都不等才是"無(wú)"。
那么,到底應(yīng)當(dāng)怎樣判斷有無(wú)呢?請(qǐng)看下面的代碼:
變量 hasNbr 起到了關(guān)鍵作用:記錄篩選結(jié)果。它的初始值為 false ,表示沒(méi)有,如果循環(huán)中找到了相等的數(shù)據(jù),再修改 hasNbr 的值為 true ,表示有。循環(huán)結(jié)束后,只要看看變量 hasNbr 是 true 還是 false ,就知道循環(huán)中是否修改過(guò)。運(yùn)行結(jié)果如下(有諾貝爾):
刪去數(shù)組中的“諾貝爾”,再次運(yùn)行程序:
右邊代碼檢查了一組考試分?jǐn)?shù),看有沒(méi)有考試不及格的,請(qǐng)仔細(xì)閱讀代碼,了解程序邏輯,然后在第 18 行(如果需要可以寫(xiě)多行)填寫(xiě)代碼,完成功能。
第 18 行填寫(xiě):
hasNopass = true; break;
break 其實(shí)不是必須的,但是一旦確認(rèn)有不及格的分?jǐn)?shù),那么繼續(xù)篩選下去就沒(méi)有意義,用 break 跳出循環(huán)可以節(jié)省時(shí)間。
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)