av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

java - 關(guān)于While,break的問題

瀏覽:120日期:2023-12-10 13:03:01

問題描述

請問為什么這段代碼while循環(huán)內(nèi)一旦進(jìn)入了else后面部分,之后的while循環(huán)就無法再進(jìn)入前半個分支了?我看if 后面的條件應(yīng)該是滿足的啊,運(yùn)行結(jié)果由于進(jìn)入不了第一個循環(huán)就沒法break了。求大神指教:

public class SearchString {

public static void main(String[] args) { String s1 = 'abcaaaaaaaabcabc'; String s2 = 'abc'; int len = s2.length(); int pos = 0; int count = 0; while (true) {if (s1.indexOf(s2, pos) == -1) { System.out.println('Search Over, result count=' + count); break;} else { System.out.println('Position' + (count + 1) + ' is ' + pos); int a = pos + len; pos = s1.indexOf(s2, a); count++;} }}

}運(yùn)行結(jié)果就是-1 10 13 -1 10 13無限循環(huán)了

問題解答

回答1:

因為當(dāng)?shù)谌尾樵兊臅r候 無法匹配到結(jié)果因此返回的值-1, indexOf()的第二個參數(shù)如果小于0的話將被當(dāng)作0處理。因此又開始了第一次的循環(huán)。

你可以斷點調(diào)試下,結(jié)果很清楚

回答2:

當(dāng)進(jìn)入第二次循環(huán)的時候進(jìn)入了else,pos變?yōu)?3。下次的循環(huán)也就是當(dāng)進(jìn)入第三次循環(huán)的時候還是進(jìn)入了else。這次在else里面a變成了16,pos則為-1,下次的循環(huán)s1,indexOf(s2, pos)為0,還是進(jìn)入else了,所以產(chǎn)生了死循環(huán)。

我覺得你需要每次在else里面不要改變pos,而是要直接截s1字符串的后半部分。

標(biāo)簽: java
主站蜘蛛池模板: 午夜在线视频 | 一级毛片在线播放 | 欧美日韩中文字幕在线 | 久久久久久91香蕉国产 | 欧美精品久久久久久久久久 | 国产一区久久精品 | 日韩精品一区二区在线 | 久久久久精 | 日韩网站在线观看 | 国产精品高潮呻吟久久 | 欧美日韩综合精品 | 久久久久国产一区二区三区 | 久久一区二区三区四区 | 天天天操操操 | 在线欧美视频 | 亚洲高清在线 | 男人天堂色| 日韩中文字幕在线观看 | 爱爱无遮挡 | 在线观看免费毛片 | 一区二区三区视频在线 | 国产福利91精品一区二区三区 | 欧洲妇女成人淫片aaa视频 | 国产精品色婷婷久久58 | 精品欧美一区二区三区久久久 | 欧美一区二区免费 | 国产精品成av人在线视午夜片 | 天堂精品视频 | 在线免费中文字幕 | 国产一级一级国产 | 91在线第一页 | 麻豆天堂| 欧美精品一区二区免费视频 | 国产超碰人人爽人人做人人爱 | 亚洲精彩免费视频 | 亚洲精品乱码久久久久久按摩观 | 免费观看av| 日韩在线一区二区三区 | 欧美xxxx色视频在线观看免费 | 亚洲精品68久久久一区 | 欧美日韩在线精品 |