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

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

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

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

問題描述

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

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

問題解答

回答1:

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

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

回答2:

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

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

標簽: java
主站蜘蛛池模板: 免费a一毛片 | 免费看一级黄色片 | 色涩网站在线观看 | 婷婷在线播放 | 国产精品素人搭讪在线播放 | 免费在线亚洲 | 午夜水蜜桃视频在线观看 | 国产日韩欧美中文 | 久久久久久久国产精品毛片 | 青青国产成人久久激情91麻豆 | 91久久精品视频 | 国产午夜精品视频 | 日韩免费视频观看 | 欧美成人做性视频在线播放 | 日韩一区二区三区免费体验 | 哪里可以免费看毛片 | 欧美一区二区三区在线观看不卡 | 国产精品亚洲片在线va | 青青青国产在线手机免费观看 | 九月婷婷综合婷婷 | 夜色网站 | 国产精品偷伦视频免费观看的 | 日韩一区二区三区精品 | 5月婷婷6月丁香 | 欧美一区二三区 | 成人网免费视频 | 在线观看福利视频在线观看 | 精品福利一区二区三区免费视频 | 亚洲黄色高清视频 | 亚洲色图首页 | 亚洲精品久久婷婷爱久久婷婷 | 国产精品久久久久一区二区 | 特黄视频免费看 | 尤物tv| 国产区久久| 久久国产精品免费专区 | 中文字幕国产日韩 | 久久久久久午夜精品 | 亚洲天堂视频网站 | 久久久视频在线 | 成人你懂的 |