2013-04-20 4 views
0

EUI48 주소의 유효성을 검사해야합니다. 현재 각 루프마다 a를 사용하고 있습니다. 정규식을 사용하여이 작업을 수행하고 싶습니다. 그러나 지금까지 행운이 없습니다.Regex - 도달 할 수없는 문

if(!input.matches("[0-9A-Fa-f]{12}+")); 
      throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input); 

     setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input); 

나는 "도달 할 수없는 진술"이라고 말하는 setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input);에 대한 전쟁을 벌입니다.

입력은 문자열입니다.

누구나 내가 뭘 잘못하고 있는지 알아? :)

+3

이렇게 준비하십시오. 똑같은 것을 말하는 적어도 10 개의 대답이있을 것입니다. – Maroun

+0

그러나 IDE에서 코드를 미세하게 검사 할만큼 인내심이 부족합니다! – NINCOMPOOP

+0

블록 주위에 중괄호가 있어야만이 오류가 발생할 수 없습니다. 포맷터를 사용하여 자동으로 수행 할 수 있으며 거의 ​​모든 좋은 IDE에서 작업을 저장할 수 있습니다. – Bananeweizen

답변

1

이 후 세미콜론을 제거해야합니다. 현재 조건문이 실행되지만, 그 결과는 예외가 던져 지는지 여부에 영향을 미치지 않습니다. 실제로 예외가 항상 throw되어 setSubstitute()에 대한 호출을 연결할 수 없습니다.

if(!input.matches("[0-9A-Fa-f]{12}+")){ 
    throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input); 
} 

setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input); 
+0

나는 지금 당황 스럽다. 그러나 대답에 대한 많은 감사의 말 : – Frey

+1

@ user2173459 아무 문제가 없다. 누구나 코드 피로에 ... –

1

if 문 다음에 ;이 있으므로 입력이 일치하지 않을 경우에만 throw 문이 항상 실행됩니다.

그것은 문 및 사용 조건 블록의 몸을 둘러싸는 중괄호 경우

if (!input.matches(...)) { 
    throw new SequenceException(...); 
} 

setSubstitute(...); 
1

당신의 끝에 세미콜론을 제거하기 위해해야 ​​문 "경우"

if(!input.matches("[0-9A-Fa-f]{12}+")) { 
     throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input); 
} 
1

이유는 if 문 뒤에 세미콜론이다; 그것은 다음과 같이 빈 블록을 지정하는 것과 같습니다

if(!input.matches("[0-9A-Fa-f]{12}+")) { 
    /* Nothing */ 
} 
throw new SequenceException("IEEE/EUI48 does not contain a valid HEX value: " + input); 
setSubstitute(inputArgsMap.get(SUBSTITUTE_ID), input); 

그래서 코드는 항상 예외가 발생하고 setSubstitute에 대한 호출이 도달하지 않습니다.

0

if 문에; 끝 부분에서

관련 문제