찾다

 >  Q&A  >  본문

java - 동안, 휴식에 관한 질문

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

공개 클래스 SearchString {

으아악

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

입니다.
習慣沉默習慣沉默2775일 전621

모든 응답(2)나는 대답할 것이다

  • 黄舟

    黄舟2017-05-17 10:04:00

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

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-05-17 10:04:00

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

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

    회신하다
    0
  • 취소회신하다