[英]How to compare Strings in if-else statements?
我想知道是否有人可以在JSP中給出一些預先填充的指針:
所以我試圖根據客戶數據庫記錄中的值預先填充一個復選框。 如果字段中有1,則檢查復選框,另一個選項為0 - 其中復選框應為空。
我目前在輸入中使用此代碼:
<%if (UPDATEDPREFERENCES != null)
{
if (ISNEWSLETTER != "0") {
out.println("checked");
}
}
%>
所以它會是:
<input type='checkbox' class="newsletter" name='temp_ISNEWSLETTER_FIELD' id="temp_ISNEWSLETTER_FIELD" <%if (UPDATEDPREFERENCES != null)
{
if (ISNEWSLETTER != "0") {
out.println("checked");
}
}
%>/>
就目前而言,它預先填好了。 但是,如果字段為0,它也會填充。如果我將其更改為:
if (ISNEWSLETTER == "1")
然后復選框為空,無論它是1還是0。
我錯過了一些明顯的東西嗎 我不是開發人員,我在紐約,我的支持在比利時 - 他們都離開了這一天。
字符串是對象 ,而不是基元 。 使用equals()
,而不是==
/ !=
。 ==
/ !=
不會檢查它們是否包含相同的值,但是它們是否指向相同的對象引用。 equals()
將檢查它們是否包含相同的值。
所以,而不是if (ISNEWSLETTER != "0")
你應該使用
if (!ISNEWSLETTER.equals("0"))
而不是if (ISNEWSLETTER == "1")
你應該使用
if (ISNEWSLETTER.equals("1"))
此問題與JSP無關。 在普通的Java類(這種代碼實際上屬於這種類)中執行此操作時,您會遇到完全相同的問題。
作為替代方案,因為它們代表數字,您也可以將ISNEWSLETTER
轉換為int
。 這是一個原始的,所以你應該能夠使用==
/ !=
通常的方式。 如有必要,您可以使用Integer#parseInt()
將String
轉換為int
。 或者,甚至更多,如果它實際上表示一個布爾狀態(它只能是true
或false
),那么你應該使用boolean
代替。 您可以直接在if
條件下使用它而無需進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.