国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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
主站蜘蛛池模板: 视频在线一区二区三区 | 免费看国产精品久久久久 | 欧美激情国内自拍偷 | 久久精品国产亚洲精品2020 | 中文字幕在线观看一区 | 日韩精品一区二区在线观看 | 国产成人经典三级在线观看 | 99国产精品农村一级毛片 | 天堂mv亚洲mv在线播放9蜜 | 日韩不卡在线观看 | aaa一级毛片免费 | 香港三级88久久经典 | 国产一级网站 | 99精品在线看 | a级国产乱理伦片在线 | 亚洲品质自拍 | 亚洲精品国产第一区二区多人 | 国产激情一区二区三区四区 | 欧美 日韩 国产 在线 | 在线欧美精品一区二区三区 | 久久久久久在线 | 国产成人爱片免费观看视频 | 国产成人亚洲综合网站不卡 | 欧美日韩一区二区三区高清不卡 | 大陆高清自拍 | 国产欧美精品综合一区 | 久久亚洲精品视频 | 色综合久久久久 | 男女朋友做爽爽爽免费视频网 | 一级做a爰性色毛片 | 国产精品在线播放 | 久久欧美精品 | 青木玲中文字幕一区二区 | 午夜伦4480yy妇女久久久 | 国产亚洲精品久久久久久无 | 欧美在线亚洲国产免m观看 欧美在线一级精品 | 国产午夜毛片v一区二区三区 | 国产片18在线观看 | 久久国产精品久久久久久久久久 | 久久成人免费观看全部免费 | 三级特黄视频 |