簡體   English   中英

如何在if-else語句中比較字符串?

[英]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 或者,甚至更多,如果它實際上表示一個布爾狀態(它只能是truefalse ),那么你應該使用boolean代替。 您可以直接在if條件下使用它而無需進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM