java - 동안, 휴식에 관한 질문
習慣沉默
習慣沉默 2017-05-17 10:02:00
0
2
569

죄송합니다. 왜 이 코드의 while 루프가 else의 뒷부분에 들어가면 후속 while 루프가 더 이상 전반부 분기에 들어갈 수 없는 걸까요? if 이후의 조건이 충족되어야 한다고 생각합니다. 첫 번째 루프에 들어갈 수 없기 때문에 실행 결과가 깨질 수 없습니다. 하나님께 조언을 구합니다:

공개 클래스 SearchString {

으아악

}
실행 결과는 -1 10 13 -1 10 13, 무한 루프

입니다.
習慣沉默
習慣沉默

모든 응답(2)
黄舟

세 번째 쿼리에서는 결과가 일치하지 않기 때문에 반환되는 값은 -1입니다. indexOf()의 두 번째 매개 변수가 0보다 작으면 0으로 처리됩니다.
그래서 첫 번째 사이클이 다시 시작됩니다.

중단점을 사용하여 디버깅할 수 있으며 결과는 매우 명확합니다

洪涛

두 번째 루프에 들어가면 else가 들어가고 pos는 13이 됩니다. 다음 루프, 즉 세 번째 루프에 들어갈 때 여전히 else에 들어갑니다.
이번에는 else에서 a가 16이 되고 pos는 -1이 됩니다. 다음 루프 s1, indexOf(s2, pos)는 0이고 여전히 else에 들어가므로 무한 루프가 생성됩니다.

else에서 매번 pos를 변경할 필요는 없고 s1 문자열의 후반부를 직접 가로채야 한다고 생각합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!