亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java - 關于While,break的問題

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

問題描述

請問為什么這段代碼while循環內一旦進入了else后面部分,之后的while循環就無法再進入前半個分支了?我看if 后面的條件應該是滿足的啊,運行結果由于進入不了第一個循環就沒法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++;} }}

}運行結果就是-1 10 13 -1 10 13無限循環了

問題解答

回答1:

因為當第三次查詢的時候 無法匹配到結果因此返回的值-1, indexOf()的第二個參數如果小于0的話將被當作0處理。因此又開始了第一次的循環。

你可以斷點調試下,結果很清楚

回答2:

當進入第二次循環的時候進入了else,pos變為13。下次的循環也就是當進入第三次循環的時候還是進入了else。這次在else里面a變成了16,pos則為-1,下次的循環s1,indexOf(s2, pos)為0,還是進入else了,所以產生了死循環。

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

標簽: java
主站蜘蛛池模板: 国产成人91高清精品免费 | 一区二区三区欧美在线 | 青青久在线视频免费观看 | 全免费一级毛片在线播放 | 在线视频 二区 | 日本三级3本三级带黄 | 国产日本在线视频 | 亚洲狠狠ady亚洲精品大秀 | 俄罗斯一级毛片aaaa | 欧美一级黄色片视频 | 伊人情涩网 | 亚洲精品成人久久 | 国产肥老妇视频∵ | 69xx在线观看视频 | 视频一区二区不卡 | 一级片视频网站 | 三级黄色在线视频中文 | 婷婷黄色片 | 成人午夜啪啪免费网站 | 欧美黑人c黑人做人爱视频 欧美黑人vs亚裔videos | 亚洲日本国产 | 精品在线一区二区三区 | 日韩欧美在线观看视频 | 全黄性色大片 | 午夜精品福利在线 | 亚洲精品一区二区三区人妖 | 欧美黄色三级视频 | 日本一级大黄毛片免费基地 | 午夜三级毛片 | 国产高清a毛片在线看 | 南京巨根无套操到你窒息 | 蜜桃臀久久伊人福利 | 国产a一级毛片午夜剧院 | 精品久久一区二区三区 | 精品国产高清毛片 | 特级片免费看 | 婷婷在线综合 | 日韩国产成人精品视频人 | 欧美黄色片在线 | 永久福利视频 | 国产h视频在线观看 |