2017-04-20 59 views
-1

的Java:不能做無效支票日期輸入字段

try { 
    if (requestModel.getDateTo() != null || !(requestModel.getDateTo().isEmpty())) { 
     formatter = new SimpleDateFormat("dd/MM/yyyy"); 
     Date dateTo = formatter.parse(requestModel.getDateTo()); 
     requestDOOb.setDateTo(dateTo); 
    } else { 
     requestDOOb.setDateTo(dateFrom); 
    } 
} 
catch (ParseException e) { 
    e.printStackTrace(); 
    return "request"; 
} 

例外:

java.text.ParseException: Unparseable date: "" at requestDOOb.setDateTo(dateFrom); 

我應該怎麼居然在空指針的角度來檢查?我提供的兩個條件似乎不符合例外要求。

+0

第7行如'requestDOOb.setDateTo(dateFrom);'? – Michael

+4

'if(requestModel.getDateTo()!= null ||!(requestModel.getDateTo()。isEmpty()))''應該是'&&'。您目前檢查日期是否爲空或者是否爲空。所以對於你得到的空字符串(true || false),這是真的,因此它試圖解析空的日期。 –

+0

@邁克爾我的意思是字面行7. – santafebound

回答

3

您的邏輯錯誤。使用「& &」而不是「||」。

2
if (requestModel.getDateTo() != null || !(requestModel.getDateTo().isEmpty())) 

你必須使用一個&&(和),而不是||(或)。

您當前檢查日期是否爲空或者是否爲空。

所以對於你得到的空字符串(true || false),這是真的,因此它試圖解析空的日期。

1

這裏:

if (requestModel.getDateTo() != null || !requestModel.getDateTo().isEmpty()) 

這將總是評估表達式。

您想改爲使用& &;以保證第一個表達式在進行第二次測試之前評估爲true

||必須評估兩個表達式(當第一個是);而& &將不是當第一個表達式爲false時,評估第二個表達式。