如何在if-else语句中比较字符串?

时间:2011-10-06 16:40:10

标签: java jsp if-statement

我想知道是否有人可以在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。

我错过了一些明显的东西吗?我不是开发人员,我在纽约,我的支持在比利时 - 他们都离开了这一天。

1 个答案:

答案 0 :(得分:10)

Stringsobjects,而不是primitives。使用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条件下使用它而无需进行比较。