2013-04-20 63 views
0

我必須驗證一個EUI48地址,目前我正在使用每個循環使用a。我想用正則表達式來做到這一點。但到目前爲止沒有運氣。正則表達式 - 無法訪問的語句

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 2013-04-20 14:46:01

+0

但是沒有足夠的耐心在IDE中仔細檢查代碼! – NINCOMPOOP 2013-04-20 14:47:36

+0

習慣於_always_在塊周圍有大括號,那麼這個錯誤就不會發生。您可以使用格式化程序自動執行此操作,並在幾乎所有良好的IDE中保存操作。 – Bananeweizen 2013-04-20 14:50:17

回答

1

後取出分號if語句,並使用大括號包圍條件塊體。目前,條件語句被執行,但其結果與是否拋出異常無關。事實上,該例外總是被拋出,導致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 2013-04-20 14:48:41

+1

@ user2173459沒問題,它可能發生在任何人身上,代碼疲勞... – 2013-04-20 14:49:08

1

您的if語句後有一個;,因此throw語句將始終執行,而不僅僅是輸入不匹配。

應該

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

setSubstitute(...); 
1

你應該在年底將分號「if」語句:

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語句不應該有一個;最後