2017-03-14 12 views
0

프로젝트에서 지금 작업하고 있습니다. Linux에서 Java를 사용하여 스캐너 클래스로 이스케이프 시퀀스를 구문 분석해야합니다. 포함하려면, 예를 들어, 키보드에있는 두 개의 END 키, 나는 처음에 다음 코드를 썼다 : 그 코드로스캐너로 파싱 findWithinHorizon 호

if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0 || sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0) { 
    System.out.print("END"); //To see if it works 

을, 나는 어떤 출력 (단자 그냥 정지)하지 않습니다. 그것을보고 난 후에 나는 두 개의 서로 다른 if :에서 두 조건을 분리했다.

if(sc.findWithinHorizon("(\\G\\e\\[4~)?",0).length() > 0) 
    System.out.print("END"); 
else if(sc.findWithinHorizon("(\\G\\eOF)?",0).length() > 0) 
    System.out.print("END"); 

그런 다음 작동한다. 아무도 OR 연산자가 작동하지 않는 이유를 알고 있습니까?

미리 감사드립니다.

답변

0

findwithinhorizon이 String으로 구문 분석 한 다음 비교를 수행하는 것이 좋습니다. 첫 번째 if 문에서 수행중인 작업은 sc를 두 번 파싱하는 것입니다. 한 번 비교를 한 다음 두 번째로 텍스트의 다른 부분에서 다른 비교를합니다.

나는 이것이 당신이 원하는 행동이라고 의심 스럽다. 지평선을 0으로 설정하면 현재 위치가 무엇인지 살펴보고 위치를 하나씩 늘리므로 두 번째 호출이 다른 인덱스를보고 있습니다. 파일의 끝에 도달했다면, 나는 이것이 이상한 행동을 일으키고 그것이 왜 멈추는지를 설명 할 것이라고 믿을 것이다.