亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

java - 關于While,break的問題

瀏覽:117日期: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
主站蜘蛛池模板: 成人在线观看网址 | 国产人成午夜免视频网站 | 亚洲人成亚洲精品 | 午夜三级网站 | 国外精品视频在线观看免费 | www中文字幕在线观看 | 精品自拍一区 | 99精品久久99久久久久 | 亚洲性xo| 久久99久久99精品观看 | 欧美乱大交xxxxx在线观看 | 欧美视频一区二区专区 | 美女被免费网站视频软件 | 成人区精品一区二区毛片不卡 | 欧美色另类 | 成人合集大片bd高清在线观看 | 免费三级网 | 欧美成人吃奶高清视频 | 欧美性色生活片免费播放 | 免费高清特黄a 大片 | 日本韩国一级毛片中文字幕 | 久久精品视频在线观看榴莲视频 | 日本三级香港三级人妇 m | 久章草在线观看 | 欧美在线视频看看 | 国产成人一级片 | 国产精品久久福利网站 | 国产91精品一区 | 欧美一级一极性活片免费观看 | 操美国女人| 手机在线视频一区 | 亚洲免费视频播放 | 欧美jizzhd精品欧美另类 | 性欧美高清久久久久久久 | 国产成人精品本亚洲 | 91看片淫黄大片欧美看国产片 | 免费国产成人高清视频网站 | 亚洲国产精品综合久久久 | 国产在线不卡午夜精品2021 | 99视频在线 | 国产20岁美女一级毛片 |