2013-06-11 69 views
0

我對「if」有個邏輯問題。我必須參數,一個文本框和一個選擇。兩者都是插入類別,但select是從數據庫生成的,並允許用戶快速選擇一個類別。我想插入文本框的類別,如果這個不是空的,並且select是空的。如果它是相反的使用選擇值。如果兩者都選擇(文本框中的文本+選擇中的選擇),則選擇選擇值。在兩者都爲空的情況下,我將定義默認值「其他」。java-ee中if語句的邏輯問題

這是代碼:

//addRss.jsp 

<select name="catOption"> 
<option value="">select category</option> 
<c:forEach var="cat" items="${categories}"> 
    <option value="${cat}">${cat}</option> 
</select> 
<label for="category">Category</label> 
<input type="text" id="category" name="category" value="" size="20" maxlength="20" /> 


//AddNewRss 

String catText = request.getParameter("category"); 
    String catOption = request.getParameter("catOption"); 
    String category = ""; 

    if((catOption != null || !catOption.trim().isEmpty()) && (catText == null || catText.trim().isEmpty())) 
     category = catOption; 
    else if((catOption == null || catOption.trim().isEmpty()) && (catText != null || !catText.trim().isEmpty())) 
     category = catText; 
    else if((catOption != null || !catOption.trim().isEmpty()) && (catText != null || !catText.trim().isEmpty())) 
     category = catOption; 
    else 
     category = "Other"; 

我的問題是,在這兩個空的情況下,程序會做第一個「如果」和發送空類別。

你看到有什麼問題嗎?

謝謝

傑里米。

Ps:抱歉,英語不是我的主要語言。

+0

'如果((catOption = NULL ||' - >'如果((catOption = NULL &&' – Maroun

+0

第一個if catOption!= null ||!catOption.trim()。isEmpty()'不會做出反應,如果你的catOption實際上是null,你將會得到一個NullPointerException –

回答

1
if((catOption != null && !catOption.trim().isEmpty()) 
    && (catText == null || catText.trim().isEmpty())) { 
     category = catOption; 
} 
else if((catOption == null || catOption.trim().isEmpty()) 
    && (catText != null && !catText.trim().isEmpty())) { 
     category = catText; 
} 
else if((catOption != null && !catOption.trim().isEmpty()) { 
    && (catText != null && !catText.trim().isEmpty())) 
     category = catOption; 
} 
else { 
    category = "Other"; 
} 

您也可以讓事情更易讀通過創建一個函數:!

private boolean isNullOrEmty(String str) { 
    return str == null || str.trim().isEmpty(); 
} 


if(! isNullOrEmty(catOption) && isNullOrEmty(catText)) { 
     category = catOption; 
} 
else if(isNullOrEmty(catOption) && ! isNullOrEmty(catText)) { 
     category = catText; 
} 
else if(!isNullOrEmty(catOption) && ! isNullOrEmty(catText)) 
     category = catOption; 
} 
else { 
    category = "Other"; 
} 
+0

完美的工作謝謝!:) –

+0

你'歡迎:) –